2010-10-25 37 views
0

從我在Objective-C中編程已經過去3天了,但我仍然不太理解自我的概念。瞭解自我。在目標C

我們什麼時候應該使用自我。在一個實現代碼? 如果我正確地理解這一點,如果我已經將其定義爲屬性,那麼我應該使用自我。 但那麼問題是爲什麼?我一直在閱讀很多我的手機編程書籍,但沒有一篇似乎沒有給我強烈而明確的答案。在像java這樣的其他編程語言中,自我和它是一樣的嗎? Objective-C中的

+0

相關:http://stackoverflow.com/questions/1341734/assigning-to-self-in-objective-c – 2010-10-25 20:17:35

+0

而且我認爲人類有天生的自我意識。 – 2010-10-25 22:44:36

+0

看這個偉大的教程http://cocoabugs.blogspot.com/2011/02/understanding-your-objective-c-self.html – 2011-02-21 05:57:25

回答

2

self大致相當於其他語言的this。另外,Objective-C 2.0中引入的點符號可以掩蓋真正發生的事情。

self.foo = 4; 
NSInteger someInt = self.foo; 

上面相同

[self setFoo:4]; 
NSInteger someInt = [self foo]; 

self實際上只是被自動傳遞給類和實例方法的變量。這是什麼使得它可以這樣做:

self = [super init]; 
if (!self) return nil; 
+0

很好的解釋....有這個http://cocoabugs.blogspot .COM/2011/02 /理解,你的目標-C-self.html – 2011-02-21 05:58:55

1

self與Java中的this相同。

在這兩種情況下,selfthis都是引用對象本身的對象中的特殊變量。當訪問同一對象上的屬性或調用方法時,或者調用外部方法以將該對象作爲參數傳遞時,請使用此方法。

如果您將selfthis視爲同一件事,則不會有任何問題。當然,由於每種語言只能識別其中的一種語言,因此您不能實際交替使用它們。

1

如果你習慣用Java編程,認爲self爲Java的this
例如,當您想要參考與該課程相關的內容時,例如,在課程Car,self.wheels中,您可以在課堂中使用self。目標C中的

3

self是指向當前消息的接收者的指針,因此它與Java中的this非常相似。

1

如果您已經定義了一個屬性並使用self.foo = bar將其合成,它會調用已爲您生成的setter。如果你只是做了foo = bar,那麼你不需要通過setter方法就可以分配給你的變量。這意味着,如果財產被宣佈爲保留或同步,您將不會利用保留。