سؤال

(فقط لتمكنك من الآن, أنا التعلم لتطوير فون مع كتاب حصلت يسمى بداية اي فون 3 التنمية:استكشاف SDK و أنا لا تستخدم واجهة البناء) هل هناك أي سبب استخدام حاصل في نفس الفئة ، عندما عضو خاص مرئيا ؟ مثل في فو.ح ، بعد أن

NSObject *myObj;
...
@property (nonatomic, retain)NSObject *myObj;

ثم في فو.م الوصول إلى الأعضاء myObj باستخدام النفس.myObj (أو [النفس myObj]) ?لأن في كتابي هنا هو ما يقول لك أن تكتب في أحد تطبيقات (التدقيق إذا UIViewController الأعضاء وجهة نظر في superview) :

if(self.yellowViewController.view.superview == nil) {

(لاحظ النفس.yellowViewController...) هناك في الواقع السبب في ذلك ؟ إذا لم يكن هناك فكرة واحدة لدي ربما لأن الأعضاء blueViewController هو من فئة BlueViewController ، لذلك أعتقد إذا كان هناك أي سبب قد يكون أن لا يسبب الارتباك.لذلك ليس هناك في أي وقت حيث استخدام حاصل في نفس الفئة هو المطلوب ؟

شكرا!!

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

المحلول

نعم الوصول إلى ivars خلال مستأصل من مباشرة هو شيء جيد للقيام به.

كمثال:من الطبيعي تصميم أنماط في الكاكاو (وخاصة على الهاتف ، حيث الموارد محدودة جدا) ويسمى تحميل كسول.

لخص يعني لا تحميل الموارد حتى كنت في حاجة إليها.

من الناحية المثالية, كنت تريد أن تضع الكود في جالبة التي من شأنها أن تحقق لمعرفة ما إذا كانت الموارد المطلوبة يتم تحميل, وإذا لم يكن, تحميل.الوصول إلى ايفار مباشرة سيعود النيل.وقد يكون البديل هو تهيئة كافة ivars عندما الفئة الأصل هو الحرف الأول رائد ، ومن ثم يؤدي إلى هدر الموارد لتخزين البيانات التي قد أو قد لا تكون هناك حاجة.

هذا يسمح لك أيضا إمكانية وضع الموارد التي يمكن استردادها مرة أخرى في الخاص بك applicationDidReceiveMemoryWarning: وطرق التخلص منها عندما تكون الموارد في ضيق ، لأنه سيتم تحميلها مرة أخرى على الطلب عند الحاجة.

نصائح أخرى

تحميل كسول جالبة:

- (UIImageView*) getImageView
{
    if (!imageView)
    {
        imageView = [[UIImageView alloc] initWithImage: [UIImage imageNamed: @"blah.png"]]; // just an example
    }
    return imageView;
}

اعتمادا على كيفية imageView هو تعريف (نسخ أو تخصيص الاحتفاظ) سوف تحتاج إلى تعديل التخصيص الفعلي ، ولكن هذا هو ما هو المقصود من تحميل كسول.

عدد قليل من الأسباب لاستخدام self.ivar جالبة الجملة بدلا من الوصول مباشرة إلى سبيل المثال متغير:

  • كسول التحميل خصائص كما ذكر آخرون
  • فرعية قد ترغب في تجاوز الممتلكات الفائقة احترام ذلك
  • إذا كنت تستخدم الذرية خصائص الطريق الصحيح الوحيد للوصول إلى مكان الإقامة من خلال جالبة
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top