2011-05-02 142 views
0

我有一個自定義的init方法爲我SecondViewController : UIViewController爲什麼我的方法找不到?

-(id) initWithFirstViewController:(FirstViewController *)theFirstViewController 
{ 
    self = [super init]; 

    fvc = theFirstViewController;  

    return self; 
} 

所以在我FirstViewController我打電話與FirstViewController作爲參數的一個實例,這個init方法。其他地方的SecondViewController我用這個傳遞intance:

[fvc setSomething]; 

被執行的方法,但我得到一個警告:

方法-setSomething未找到(返回類型默認爲id

如何解決這個問題?

+0

請引用完整的錯誤信息(它表示方法調用被髮送到哪種類型的對象)。另外,FirstViewController實際上是否有'setSomething'方法? – DarkDust 2011-05-02 06:14:56

+0

它說「語義問題」並完全顯示我發佈在我的問題中的警告,方法存在並執行 – 2011-05-02 06:17:12

+0

因此,這是編譯時錯誤而不是運行時錯誤?回到我的問題,FirstViewController'確實實現了這個方法嗎?你有沒有導入相應的'.h'文件在哪裏定義? – DarkDust 2011-05-02 06:19:32

回答

3

在這種情況下,這是#import文件的問題,因此編譯器知道該方法。

此外,您應該保留theFirstViewController,因爲它有可能被釋放,並在完全相同的內存位置(fvc仍指向哪個位置)創建不同的對象。所以你應該做「fvc = [theFirstViewController retain];」,因爲你「握着」第一個視圖控制器(你稍後想要使用它)。不要忘記在你的dealloc中發佈它。

相關問題