سؤال

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

من الناحية المثالية، أود أن أخبر المترجم أنه لا ينبغي له القيام بأي طريقة للتحقق من هذه الفئة المحددة على الإطلاق، ولكن بما أن هذا يبدو غير مرجح إلى حد ما، سأكون سعيدًا أيضًا بـ #pragma أو بأي طريقة أخرى (والتي لا تتضمن إغلاق المترجم لكل تحذير في المشروع/الملف بأكمله!)

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

المحلول

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

typedef void (^ObjCCaseBlock)();

@interface NSObject ()
- (id)switch;
- (void)case:(NSString*)a :(ObjCCaseBlock)b;
- (void)case:(NSString*)a :(ObjCCaseBlock)b case:(NSString*)a :(ObjCCaseBlock)b;
- (void)case:(NSString*)a :(ObjCCaseBlock)b case:(NSString*)a :(ObjCCaseBlock)b case:(NSString*)a :(ObjCCaseBlock)b;
@end

كرر ذلك لأكبر عدد ممكن من المستويات (ويمكنك إضافة مستويات إذا واجهت مشكلة).إنها مملة بعض الشيء، ولكنها ليست صعبة.

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