كيفية استخدام أسلوب فئة الذاتي على iPhone؟ (السؤال النظري)
-
03-07-2019 - |
سؤال
وأنا أكتب أسلوب مثيل في ClassName.m:
-(void)methodName:(paraType)parameter
{...}
ويطلق عليه باستخدام
تحذير[self methodName:parameter];
A سوف يطفو على السطح، لكن رمز لا يزال يعمل بنجاح.
هل هذا لأنني لم إنشاء مثيل من الصف؟ لماذا الأسلوب لا يزال يعمل بشكل طبيعي؟ وما هي الطريقة الصحيحة لاستدعاء الأسلوب الذاتي لمنع التحذير؟
المحلول
وكذلك فإن الخطوة الأولى في الحصول على المساعدة مع تحذير يكون للنشر التحذير:)
وأنا على افتراض أنها شيء حول رسالة غير المعترف بها؟ إذا كان الأمر كذلك لأن على الرغم من أن المترجم ترى الدعوة إلى "METHODNAME" أنه لا يعرف إذا كان هذا هو صالح للكائن أم لا.
واعتقد ان التعليمات البرمجية تبدو مثل؛
-(void) someFunc
{
...
[self methodName:parameter];
...
}
-(void)methodName:(paraType)parameter
{
...
}
ويمكنك إما؛
وأ) ضع الدالة 'METHODNAME في وقت سابق في الملف حتى المترجم قد شهدت قبل انها تستخدم في المكالمات.
وب) تعلن في واجهة الطبقة. منها مثلا.
// Foo.h
@interface Foo {
...
}
-(void) methodName:(paraType)parameter;
@end
نصائح أخرى
ما هو التحذير الذي تحصل عليه؟
هل لديك تعريف الأسلوب في ملف الرأس الخاص بك؟
وبناء الجملة التي تستخدمها هي الطريقة بروبر من استدعاء الأسلوب على الذات.
وسوف يعمل الأسلوب لأن يتم حلها الأساليب الهدف-C في وقت التشغيل. وأتوقع أن التحذير الذي تحصل عليه هو شيء من هذا القبيل "كائن فو قد لا تستجيب ل-methodName:" وبعد ذلك يخبرك أنه هو التخلف نوع الإرجاع إلى id
. ذلك لأن المترجم لم يشهد أي إعلان أو تعريف -methodName:
في الوقت الذي يجمع التعليمات البرمجية حيث كنت اسميها. لإزالة التحذير، أن يعلن طريقة في أي واجهة الطبقة أو فئة على فئة.
إذا كنت تحصل على تحذير قد يكون بسبب التوقيع الطريقة ليست في واجهة.
@interface foo ....
-(void)method;
وبمجرد كتابة تنفيذ هذا التحذير يجب ان تذهب بعيدا لأنها ليست المرة الأولى التي شهدت مترجم الأسلوب. وسوف يعمل دون أن تفعل هذا، ولكن رسالة تحذير مزعج.