كيفية استخدام أسلوب فئة الذاتي على iPhone؟ (السؤال النظري)

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

سؤال

وأنا أكتب أسلوب مثيل في 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;

وبمجرد كتابة تنفيذ هذا التحذير يجب ان تذهب بعيدا لأنها ليست المرة الأولى التي شهدت مترجم الأسلوب. وسوف يعمل دون أن تفعل هذا، ولكن رسالة تحذير مزعج.

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