كيف يمكنني استدعاء الدالة الأصلية من طاقتها وظيفة في الفئة ؟

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

سؤال

في الهدف جيم, لدي فئة لفئة:

@interface UILabel(CustomInit)

- (id)initWithCoder:(NSCoder *)coder;

@end

ما أفعله هو كتابة الحرف الأول مخصص وظيفة أن يفعل بعض الأشياء الإضافية ، ما أود القيام به في هذا العرف init وظيفة الاتصال UILabel قاعدة لاستخدام هذه الطريقة اضع+.هل هذا ممكن ؟ كيف ذلك ؟

تحرير

شكراحسنا, لذا خططي الصورية.لا يمكن الزائد فقط لاستخدام هذه الطريقة اضع+.هل هناك طريقة لتحقيق نفس الوظائف (حيث كل UILabels على هذا إضافة خطوة التهيئة) دون إثقال لاستخدام هذه الطريقة اضع+?أو ربما هناك نموذج التعليمات البرمجية عن UILabel هو لاستخدام هذه الطريقة اضع + أن أستطيع كتابة مع إضافة رمز ؟

تحرير

حسنا, لذلك أن تكون واضحة حول ما أحاول:

تضمين خط مخصص في تطبيق اي فون?

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

أي اقتراحات من شأنها أن تكون كبيرة.شكرا

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

المحلول 2

كيف تشعرون حول هذا ؟

الاستيلاء على الأسلوب الأصلي عنوان لاستخدام هذه الطريقة اضع + في وقت التشغيل وتخزينها في متغير ثابت.هل طريقة المتحرك على أن تحل محل الطبقات التنفيذ مع بلدي لاستخدام هذه الطريقة اضع+.ثم في بلدي لاستخدام هذه الطريقة اضع+, وأود أن استدعاء الأسلوب الأصلي المخزنة في متغير ثابت.

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

يبدو خطيرا ، ولكن أشعر أنه يجب أن تعمل.

نصائح أخرى

من نظام التشغيل Mac OS X مكتبة مرجعية:

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

طريقة swizzling يجب أن تعمل كما kidnamedlox المقترحة .

بالضبط نفس السؤال نوقش في هذا ستانفورد اي تيونز الدرجة من قبل إيفان دمية

https://podcasts.apple.com/us/podcast/iphone-application-programming-spring-2009/id384233222

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