گروه مقاله : ios
تاريخ انتشار : 1396/05/10 - 15:18
كد :7753
در مقاله استفاده از 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 در کرج با شرکت سارگون تماس بگيريد.