گروه مقاله : ios
تاريخ انتشار : 1396/05/10 - 15:18
كد :7753

چگونه میان کلاس و structure یکی را انتخاب کنیم

در این مقاله به توضیح نحوه انتخاب میان کلاس و Structure در سویفت پرداخته ایم

آموزش برنامه نویسی ios

 

در مقاله استفاده از Structures  ها در سویفت تفاوت های میان کلاس و Structure را توضیح دادیم.

شما میتوانید از کلاس و Structure ها برای تعریف data types های سفارشی برای نرم افزار خود استفاده کنید.

هرچند که structure ها همیشه بصورت value ارجاع داده شده و کلاس ها همیشه بصورت reference ارجاع داده میشوند.

این بدان معنا است که هنگام کار با نرم افزار برحسب نوع داده ها و نوع عملیات مد نظر خود باید برای انتخاب میان کلاس و Structure ها یکی را انتخاب کنید. و این دو ارجحیت کلی نسبت به هم ندارند .

به عنوان یک راهنمای کلی اگر هر کدام از شرط های زیر برقرار بود از Structure استفاده کنید:

هدف اصلی Structure ها کپسوله کردن مقادیر داده های ساده و به هم مرتبط است.

این انتظاری معقول است که یک مقدار خارج شده از کپسول هنگامی که توسط Structure به یک متغییر ارجاع میشود ، کپی شود نه اینکه بصورت Referenced استفاده شود.

هر ویژگی گرداوری شده توسط Structure ها دارای نوع value types است . که انتظار میرود هنگام استفاده شدن کپی شود.

Structure ها نیازی به اینکه ویژگی را از یک عنصر دیگر به ارث ببرند ندارند . آنها همچنین نیازی به رفتار کردن مانند یک نوع موجود دیگر را نیز ندارند.

مثال های برای کاندیدا های خوب برای Structure ها:

اندازه اشیاء ژئومتریک (مربع ، مستطیل و مکعب، و غیره) ، قاعدتا مقدار Width و height را بصورت Double از حالت کپسوله خارج خواهد کرد.

یک راه برای ارجاع دادن به یک دامنه ی داده بصورت یک رشته ، ویژگی ها Start و Length هردو به صورت Int از حالت کپسوله خارج خواهند شد.

یک نقطه بصورت یک سیستم مختصات سه بعدی ، که مشخصات X,y,z به صورت double از حالت کپسوله خارج خواهند شد.

در تمام حالت های دیگر ، یعنی غیر از حالات بالا ما یک کلاس تعریف می کنیم. و کلاس ها را برای مدریت ارجاع مقادیر بصورت Reference بکار میبریم. این به این معنا است که بیشتر ساختارهای داده ها باید بصورت کلاس تعریف شوند و نه structure

اختصاص و کپی کردن ویژگی های رشته ها ، آرایه ها و دیکشنری ها

در سویفت ، بیشتری انواع داده های معمول مانند رشته ها ، آرایه ها و دیکشنری ها بصورت Structure بکار میروند. این به این معنی است که داده هایی مانند رشته ها، آرایه ها و دیکشنری ها هنگامی که به یک ثابت یا متغییر جدید ارجاع داده شوند کپی خواهند شد ، این در مورد ارجاع به عملگرها و یا متد ها هم صادق است.

این رفتار درمورد ساختار های Foundation ذکر شده متفاوت است: NSString , NSArray and NSDictionary بصورت کلاس بکار میروند. و نه بصورت Structure ، رشته ها ، آرایه ها و دیکشنری ها در Foundation یا ساختار پایه خود بصورت یک Reference ارجاع داده میشوند.

نکته :

در توضیحات بالا کپی کردن رشته ها ، آرایه ها و دیکشنری ارجح تر است ، رفتاری که شما از کدها مشاهده می کنید برطبق اصل کپی شدن آنها است که رخ میدهد ، سویفت خودش در شرایط لازم ، از مقادیری که باید، کپی تهیه می کند. این روش کاملا بهینه شده است و شما نباید سعی کنید مانع انجام آن شوید.

 

براي بهره مندي از مشاوره تخصصي در زمینه برنامه نویسی ios در کرج با شرکت سارگون تماس بگيريد.

نظرات كاربران :