ios - يجب أن أعلن المتغيرات في واجهة أو استخدام الخاصية في قوس ج الهدف؟




objective-c automatic-ref-counting instance-variables (3)

الطريقة الأكثر حداثة 1 :

  • كلما كان ذلك ممكنا ، أعلن الخصائص
  • لا تعلن iVars على حدة 2
  • لا تفعلsynthesize 3
  • حدد عدد قليل من الخصائص بقدر الإمكان في ملف .h
  • حدد أكبر عدد ممكن من الخصائص في ملحق فئة في ملف .m 5

1 اعتبارا من Xcode 4.5.2. معظم هذا ينطبق مرة أخرى على 4.4 ، وبعضها لن يترجم على 4.2 (النسخة الأخيرة المتاحة تحت سنو ليوبارد). هذا هو الاشياء preprocessor ، لذلك كل شيء متوافق على الأقل إلى iOS5 (أنا لم تختبر على iOS4 ولكن هذا ينبغي أيضا أن يكون موافق).

2 ليس هناك جدوى من إعلان iVar بالإضافة إلى خاصية. أنا متأكد من أن هناك بعض الحالات الغامضة التي تريد فيها إعلان iVars بدلاً من الخصائص ولكن لا يمكنني التفكير في أي منها.

3 سيعمل Xcode على إنشاء iVar بنفس اسم الخاصية ، مسبوقًا بـ _underscore. إذا كنت (نادراً) تحتاج إلى نوع آخر من السلوك ، يمكنك يدوياً @synthesize property = someOtherName . يربطناvikingosegundo بهذه المقالة على ivars ديناميكية ، وهي حالة استخدام لـ @synthesize . تعليقاتRobNapier التي تحتاجها إلى @synthesize iVar = _iVar (غريب) إذا كنت تقوم بإنشاء الخاصة بك getters (readonly) و setters (قراءة / كتابة) لخاصية ، كما في هذه الحالة فإن المعالج الأولي لن تولد iVar لك .

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

5 هذه هي كتلةinterface في ملف .m الخاص بك ، الموضوعة فوقimplementation الخاص بك:

#TestClass.m

@interface TestClass()

//private property declarations here

@end

@implementation TestClass
...

النهج 1:

@interface MyController : UIViewController {
    UILabel *myText;
}

@property (nonatomic, strong) UILabel *myText;

النهج 2:

@interface MyController : UIViewController
@property (nonatomic, strong) UILabel *myText;

النهج 3:

@interface MyController : UIViewController {
    UILabel *myText;
}

لقد قرأت بعض المقالات التي تتحدث عن هذا النوع من الأشياء ، لكنني ما زلت لا أدرك حقا أي نهج يجب أن أتبناه.

كما أنني وجدت أن أحدهم قال أن الطريقة الأولى طريقة قديمة لذا أود معرفة أفضل الممارسات لـ ios sdk 6 باستخدام ARC.

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

علاوة على ذلك ، يكتب بعض مطوري البرامج @ بهذه الطريقة

@synthesize myText=_myText;

لكن البعض يكتب هذا:

@synthesize myText;

أود أيضا معرفة الفرق وأيهما أفضل؟

شكرا جزيلا!


قد تحتاج أيضًا إلى استخدامsynthesize إذا كنت ترغب في جدول محتويات جميل لخصائصك التي لم تتم ترجمتها ، والتي يمكنك الرجوع إليها والتعليق عليها من أجل الوضوح والتنظيم.

أيضا ، @ synthesize يسمح لك بتعيين نقطة توقف على الممتلكات والاعتراض عندما يتم تغيير قيمته.

عندما يقوم المترجم بكل شيء من أجلك ، ينتهي بك المطاف إلى الابتعاد عما يحدث بالفعل ويجهله. ومع ذلك ، عدم الحاجة إلى كتابة كل شيء بنفسك كل الوقت هو أيضا لطيف.


هذه الميزة غير متوفرة حاليًا في Phonegap / Cordova 2.3. ومن المقرر إضافة (من بين أمور أخرى) في Phonegap / Cordova 2.4:

https://issues.apache.org/jira/browse/CB-2071

تصحيح:

يمكنني أن أؤكد أن هذا قد تم تنفيذه الآن في 2.4.0. يمكن إجراء تكبير التكبير على النحو التالي:

window.open(url, '_blank', 'EnableViewPortScale=yes');






ios objective-c automatic-ref-counting instance-variables