2012-02-28 112 views
0

我做一些編程,我也是在同一時間閱讀一些代碼,我碰到過這樣的代碼這是一個方法如何調用另一種方法?

-(id)init 
{ 
    if ((self = [super init])) 
    { 
     some code.... 
     [self initEnemy]; 
    } 
    return self; 
} 

及以下,它有

-(void)initEnemy 
{ 
    more code.... 
    [self resetEnemy]; 
} 

,然後..

-(void)resetEnemy 
{ 
    more code.. etc.. 
} 

我看到它是呼籲方法initEnemyinit調用第一種方法的方式和,反過來調用。基本上一種方法帶來另一種方法等等。 成功形成一個算法(你不能真正知道,因爲我已經顯示了很少的代碼)。我以正確的方式看待它嗎?

另外,我可否解釋-(id)init方法內執行return self;時發生的情況。

回答

1

是的,你正在閱讀正確的執行順序。


當「迴歸」發生在一個方法,控制返回到「來電顯示」的方法(誰最初稱它擺在首位)。 「自我」在那裏表明「自我」的價值應該交還給調用者。 (在這種情況下,「self」是指在-init中初始化的對象的實例。如果您想了解更多關於初始化程序的信息,可以將其分解爲更具體的問題。)

+0

那麼,什麼是返回到 - (id)init方法是我的類的超級類?對不起,我可能會混淆。 – 2012-02-29 00:06:00

+1

@ElmedinZelenkic:你在問一些關於基本程序控制流程如何工作的超級廣泛的東西。我的常規建議是通過一些初學者的Objective-C教程。 「init」方法內的「return」不會返回「*」*本身*,它將*返回給*任何調用init方法的人,這是您不顯示的其他地方。它正在返回的是它自己的實例。 (「Init」在這方面有點特別/令人困惑,'self'返回給調用者剛剛初始化的對象實例。) – 2012-02-29 00:23:00

+0

明白了。非常感謝您回答我的問題。 – 2012-02-29 00:25:02

相關問題