سؤال

لاحظت هذا أثناء استخدام iOS6 beta 3

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

هل هذا ما القصد هنا ؟ لم يكن هناك أي تغيير على جعل الأمور في الواقع خاصة الآن ؟ لاحظت @خاص التوجيه هناك أيضا.

ما هو الشخص أسلوب الترميز خاصة فيما يتعلق فأر و الأساليب ؟

تحديث:منذ كسكودي تدفعنا إلى استخدام فئة امتداد لقد ذهبت و كانت تستخدم طرق خاصة/ايفار لهذا المشروع.وجدت العيب على الرغم من.رأيت أنني يمكن إعادة استخدام واحدة من بلدي ثم subclassed UIViewControllers جنبا إلى جنب مع كل من هو UIButtons ، UILabels ، الخ....كان هذا الميراث:UIViewController <- FirstViewController <- SecondViewController.

حسنا, كل من الأساليب التي وضعت في فئة امتداد FirstViewController لا يطفو على السطح في "الإكمال التلقائي" عندما البرمجية في SecondViewController.إزعاج طفيف....

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

المحلول

كنت في اشارة الى واجهة هذا التعريف:

@interface MYViewController ()
@end

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

أن وجهة نظرك هي الصحيحة.يستخدم هذا تعريف خاص أساليب وخصائص.

في ObjC العالم "الخاص" هو "لا التعدي على ممتلكات الغير" علامة, ولا أسلاك شائكة أسلاك الجدار.في حين أن هناك @private الكلمة (أن يضيف المترجم إنفاذ) ، فإنه ينطبق فقط على ivars و عموما ليس من الضروري.هذا نوع من التحذير يستند إلى خصوصية يعمل بشكل جيد جدا في ObjC و هو تماما ما يكفي.

وضع الخاص بك والممتلكات الخاصة في هذه الفئة التمديد ، وخارج المتصلين سوف تحصل على "قد لا تستجيب محدد" تحذيرات إذا حاولوا الوصول إليها (مثل أنها سوف تحصل على استدعاء أي undefined method).يجب أن تسمح ابدأ التحذيرات موجودة في ObjC المشروع ، وبالتالي هذا يفرض تغليف البيانات.


تحرير

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

فيما يتعلق "لماذا فقط عرض وحدات تحكم." أولا, انها ليست مجرد عرض وحدات تحكم.انها مجرد وجهة نظر تحكم على دائرة الرقابة الداخلية (حسنا, VC, TableViewController ، GLKViewController).على ماك, كما أنها نافذة التحكم و الضوء المستوردين.انظر في:

.../Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates
.../Library/Xcode/Templates

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

يمكنك أن تجعل الخاصة بك قوالب كذلك.انظر خلق العرف كسكودي 4 ملفات القوالب.

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