2010-05-24 92 views
3

我從字符串創建一個類,檢查它是否有效,然後檢查它是否響應某個特定的方法。如果是的話,我打電話給方法。這一切工作正常,除了我得到一個惱人的編譯器警告:「警告:沒有'-setCurrentID:'找到方法」。我在這裏做錯了什麼?無論如何要告訴編譯器一切正常,並停止報告警告?No method found compiler warning

在這裏是代碼:

// Create an instance of the class 
id viewController = [[NSClassFromString(class) alloc] init]; 

// Check the class supports the methods to set the row and section 
if ([viewController respondsToSelector:@selector(setCurrentID:)]) 
    { 
     [viewController setCurrentID:itemID]; 
    } 

// Push the view controller onto the tab bar stack  
[self.navigationController pushViewController:viewController animated:YES]; 
[viewController release]; 

乾杯

戴夫

回答

7

要麼導入的聲明的方法或只使用一個非正式的協議,在您的實現聲明它的頭。編譯器必須知道方法的簽名。

@interface NSObject (MyInformalProtocol) 

- (void)setCurrentID:(int)id; 

@end 
+0

謝謝尼古拉,非常有幫助。乾杯 戴夫 – 2010-05-24 11:17:16

+0

正式和非正式協議之間的差異,這是一個很好的參考,再次感謝您的轉向。 http://developer.apple.com/mac/library/documentation/cocoa/conceptual/objectivec/articles/ocProtocols.html 關心戴夫 – 2010-05-24 15:30:16

+0

還有另一種方法來解決警告,我有時使用時,我是懶惰:NSObject的'performSelector:withObject:'而不是直接發送消息。但是,只有當你的論點是一個對象時,這纔是好事。 – 2010-05-24 15:48:38

相關問題