ج موضوعية:هل تريد إنشاء iVars @public أو @synthesizing @properties لهم؟متى يجب علي استخدام الخصائص؟

StackOverflow https://stackoverflow.com/questions/8984921

  •  13-11-2019
  •  | 
  •  

سؤال

لدي بعض متغيرات المثيلات في صفي والتي أرغب في الوصول إليها في أي مكان.مثل ذلك:

@interface SomeObject : NSObject
{
    @public
        NSString *someString;
}
@end

@implementation SomeObject
@end

يمكنني الوصول إلى الخاصية من المثيل باستخدام -> بناء الجملة كما هو موضح أدناه، كما سأفعل في C++:

someObjectInstance->someString

هل يجب أن أقوم بإنشاء عقار لـ someString عندما يكون كل ما أريده هو أن يكون في متناول العالم الخارجي؟سأقوم بإنشاء @property ل someString في واجهتي و @synthesize في تطبيقي، والذي سيمكنني من الوصول إليه باستخدام بناء جملة النقطة.

هل كانت مفيدة؟

المحلول

بشكل عام، إذا كنت تريد الكشف عن البيانات، فيجب عليك استخدام الخصائص.إن جعل متغيرات الحالة عامة فكرة سيئة بشكل عام.

نصائح أخرى

إنها الطريقة الأكثر توجهاً نحو الكائنات للقيام بذلك لأنه عند استخدام خاصية ما، يمكنك تغيير المُحضر/الأداة لاحقًا (بدلاً من تركيبها) إذا كنت تريد أن تفعل شيئًا آخر.

نعم، لأن ما تفعله عندما تقوم به @property هو توجيه الأشخاص الذين يستخدمونه للاتصال بـ setSomeString و someString الأساليب، في الواقع.حتى لو كنت @synthesizeبالنسبة لهم، من الأفضل أن تستخدم جودة التعليمات البرمجية الخاصة بك الأساليب، لأنك استطاع قم بتغييرها إذا كنت بحاجة إلى ذلك.إذا كنت تستخدم مرجع المؤشر فقط، وإذا وجدت نفسك بحاجة إلى اعتراض عمليات الوصول، فلن تتمكن من القيام بذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top