ج موضوعية:هل تريد إنشاء iVars @public أو @synthesizing @properties لهم؟متى يجب علي استخدام الخصائص؟
-
13-11-2019 - |
سؤال
لدي بعض متغيرات المثيلات في صفي والتي أرغب في الوصول إليها في أي مكان.مثل ذلك:
@interface SomeObject : NSObject
{
@public
NSString *someString;
}
@end
@implementation SomeObject
@end
يمكنني الوصول إلى الخاصية من المثيل باستخدام ->
بناء الجملة كما هو موضح أدناه، كما سأفعل في C++:
someObjectInstance->someString
هل يجب أن أقوم بإنشاء عقار لـ someString
عندما يكون كل ما أريده هو أن يكون في متناول العالم الخارجي؟سأقوم بإنشاء @property
ل someString
في واجهتي و @synthesize
في تطبيقي، والذي سيمكنني من الوصول إليه باستخدام بناء جملة النقطة.
المحلول
بشكل عام، إذا كنت تريد الكشف عن البيانات، فيجب عليك استخدام الخصائص.إن جعل متغيرات الحالة عامة فكرة سيئة بشكل عام.
نصائح أخرى
إنها الطريقة الأكثر توجهاً نحو الكائنات للقيام بذلك لأنه عند استخدام خاصية ما، يمكنك تغيير المُحضر/الأداة لاحقًا (بدلاً من تركيبها) إذا كنت تريد أن تفعل شيئًا آخر.
نعم، لأن ما تفعله عندما تقوم به @property
هو توجيه الأشخاص الذين يستخدمونه للاتصال بـ setSomeString
و someString
الأساليب، في الواقع.حتى لو كنت @synthesize
بالنسبة لهم، من الأفضل أن تستخدم جودة التعليمات البرمجية الخاصة بك الأساليب، لأنك استطاع قم بتغييرها إذا كنت بحاجة إلى ذلك.إذا كنت تستخدم مرجع المؤشر فقط، وإذا وجدت نفسك بحاجة إلى اعتراض عمليات الوصول، فلن تتمكن من القيام بذلك.