2012-03-14 34 views
5

我目前正在研究一個NSProxy子類,該子類攔截某些消息,並且不會將它們轉發給任何人,而只是對其進行處理,因此這些方法從未真正存在。問題出現了,顯然編譯器開始抱怨缺少的方法實現,並且我無法弄清楚如何停止它,只是爲了讓編譯器關閉而將接口方法添加到接口中是行不通的,因爲方法是任意形成的,我不知道它們在前面(爲了使它更具體,我要求this項目)。禁用實例方法未找到警告

理想情況下,我想告訴編譯器,它不應該做任何方法檢查這個特定的類,但因爲這似乎不太可能我也很樂意爲#pragma或任何其他方式(它不'包括關閉整個項目/文件中的每個警告的編譯器!)

回答

1

你的switch語句並不是真的任意的,它們只能有一個任意的長度。對於很多的長度,你可以繼續聲明它們以利於編譯器(然後你會得到錯誤檢查,如果你只是關閉了警告,你就不會這麼做)。例如:

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 

重複儘可能多的級別(如果碰到問題,您可以添加級別)。這有點乏味,但並不困難。

+0

這不適用於'default',它不會被強制結束...... – JustSid 2012-03-14 19:54:34

+0

或者,它確實有效,但它幾乎在任何時候都變得很大而且很糟糕。 – JustSid 2012-03-14 20:24:56

+0

谷歌搜索後,它似乎是唯一的選擇(雖然提交##雜誌雷達)...我不是很滿意的解決方案,但我想它必須做的伎倆現在。 – JustSid 2012-03-14 20:51:36

相關問題