Mojtaba Mirzadeh
Mojtaba Mirzadeh
خواندن ۲ دقیقه·۴ ماه پیش

همه چیز درباره‌ی کلاس‌ها و استراکچرها در SwiftUI و UIkit

مقدمه

در برنامه‌نویسی iOS، استفاده از کلاس‌ها (Classes) و استراکچرها (Structures) دو روش اصلی برای تعریف داده‌ها و عملکردهای مورد نیاز هستند. این دو مفهوم هر دو به شما اجازه می‌دهند تا داده‌ها و توابع مرتبط را در یک نوع داده جمع‌آوری کنید، اما تفاوت‌های مهمی نیز بین آن‌ها وجود دارد. در این پست، به بررسی این تفاوت‌ها و کاربردهای هر یک می‌پردازیم.


کلاس‌ها (Classes)

کلاس‌ها نوعی از داده‌ها هستند که قابلیت وراثت (Inheritance) دارند، به این معنا که می‌توانید از یک کلاس پایه، کلاس‌های دیگری ایجاد کنید که تمام ویژگی‌ها و توابع کلاس پایه را به ارث می‌برند. همچنین، کلاس‌ها به صورت Reference Type هستند، به این معنا که وقتی یک کلاس را به یک متغیر دیگر اختصاص می‌دهید، هر دو متغیر به همان شیء اصلی اشاره می‌کنند.

https://gist.github.com/smsdm4/ce504b28862bdcc56a593d24376e5e59


استراکچرها (Structures)

استراکچرها نیز مشابه کلاس‌ها هستند، اما چند تفاوت کلیدی دارند. استراکچرها Value Type هستند، به این معنا که هر وقت یک استراکچر را به یک متغیر دیگر اختصاص می‌دهید، یک کپی از داده‌ها ایجاد می‌شود. استراکچرها نمی‌توانند وراثت را پشتیبانی کنند.

https://gist.github.com/smsdm4/00a62d2674c736942b7b740af8082383


Reference Type و Value Type

همان‌طور که مشاهده کردید، کلاس‌ها Reference Type هستند، به این معنا که وقتی یک شیء کلاس به یک متغیر دیگر اختصاص داده می‌شود، هر دو متغیر به همان شیء اصلی اشاره می‌کنند. استراکچرها Value Type هستند و هر وقت یک شیء استراکچر به یک متغیر دیگر اختصاص داده می‌شود، یک کپی از داده‌ها ایجاد می‌شود.

https://gist.github.com/smsdm4/da987610847e3067cdb421609b692e16

مثال از Reference Type (کلاس‌ها)

https://gist.github.com/smsdm4/d30cf7a8d6fe4a4a90951a4cb141b764

مثال از Value Type (استراکچرها)


وراثت (Inheritance)

وراثت به شما اجازه می‌دهد تا کلاس‌های جدیدی بر اساس کلاس‌های موجود ایجاد کنید. این ویژگی تنها در کلاس‌ها موجود است و استراکچرها از آن پشتیبانی نمی‌کنند.

https://gist.github.com/smsdm4/85197a966c733ef0d95c008b996485f4


استفاده از کلاس‌ها و استراکچرها در UIKit و SwiftUI

کلاس‌ها و استراکچرها در هر دو فریم‌ورک UIKit و SwiftUI به کار می‌روند. برای مثال، UIView و UIViewController در UIKit از کلاس‌ها هستند. در SwiftUI، بسیاری از View ها به صورت استراکچر تعریف شده‌اند.

https://gist.github.com/smsdm4/1acf0aa82ec2fd07c6c72d9e2c1a4079
https://gist.github.com/smsdm4/bad99b9553bb91a466208665e3baf074

جمع‌بندی

در این پست، با تفاوت‌ها و کاربردهای کلاس‌ها و استراکچرها در Swift آشنا شدیم. هر کدام از این دو نوع داده ویژگی‌های خاص خود را دارند و بسته به نیاز خود می‌توانید از آن‌ها استفاده کنید. در پست‌های بعدی به موضوعات پیشرفته‌تری مانند پروتکل‌ها، کنترل دسترسی، و مدیریت حافظه خواهیم پرداخت.


swiftswiftuistructclassuikit
توسعه‌دهنده ارشد iOS | علاقه‌مند به هوش مصنوعی و یادگیری ماشینی | مدرس برنامه‌نویسی iOS
شاید از این پست‌ها خوشتان بیاید