2011-05-21 60 views
-1

嘿, 我是編程新手我想知道爲什麼總是[self method];?我的意思是爲什麼有人可以解釋我爲什麼它是自我和背景中發生了什麼?如果這是一個愚蠢的問題不好意思客觀c幫助 - 調用方法?

感謝, TC

回答

3

基本上,self指的是您當前處於上下文中的對象。 [self somemethod]表示您正在調用self初始化爲的類中名爲somemethod的方法。

例如,如果你是做這樣的事情:

Foo *f = [[Foo alloc]init]; 
[f someMethod]; 

你會在Foo實例來調用someMethod

但是,如果您在類Foo的內部工作,則自我充當對當前對象的顯式引用。在這種情況下,您只需使用[self someMethod]來調用someMethod

-(id) init { 
    if (self = [super init]) { 
     [self someMethod]; 
    } 
    ... 
} 

-(void) someMethod { } 

這有幫助嗎?

+0

沒問題,所以如果你工作的話,假設在班級a,並且你想從班級b調用一個方法,你會去[b nameofmethod];如果你想從同一個班級(即班級a)調用方法,你會去[self nameofmethod];如果是這樣,那麼謝謝你 – 2011-05-21 19:10:13

+0

這就是主意,是的。以我如何使用自我的例子更新我的答案。 – csano 2011-05-21 19:11:31

0

因爲[self method];調用從它被稱爲類-method方法。

0
  1. [self method]調用調用類的方法。例如,在你的類的頭文件,

    @interface YourClass:NSObject的{

    }

    - (無效)的MyMethod;

然後,您可以使用[self myMethod]在YourClass中調用'myMethod'。是否有意義?

  1. 在調用[self method]期間,沒有任何後臺工作。 [self method]與C中的調用函數幾乎相同。當你使用[self method]時,你的類中的'method'就被立即調用。
0

如果你想在ObjC殺死約翰:

[john sendBullet] 

如果你sendBullet to myself(簡稱個體經營),這是一個自殺

[self sendBullet] 

有區別嗎? :)