從我在Objective-C中編程已經過去3天了,但我仍然不太理解自我的概念。瞭解自我。在目標C
我們什麼時候應該使用自我。在一個實現代碼? 如果我正確地理解這一點,如果我已經將其定義爲屬性,那麼我應該使用自我。 但那麼問題是爲什麼?我一直在閱讀很多我的手機編程書籍,但沒有一篇似乎沒有給我強烈而明確的答案。在像java這樣的其他編程語言中,自我和它是一樣的嗎? Objective-C中的
從我在Objective-C中編程已經過去3天了,但我仍然不太理解自我的概念。瞭解自我。在目標C
我們什麼時候應該使用自我。在一個實現代碼? 如果我正確地理解這一點,如果我已經將其定義爲屬性,那麼我應該使用自我。 但那麼問題是爲什麼?我一直在閱讀很多我的手機編程書籍,但沒有一篇似乎沒有給我強烈而明確的答案。在像java這樣的其他編程語言中,自我和它是一樣的嗎? Objective-C中的
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;
很好的解釋....有這個http://cocoabugs.blogspot .COM/2011/02 /理解,你的目標-C-self.html – 2011-02-21 05:58:55
self
與Java中的this
相同。
在這兩種情況下,self
和this
都是引用對象本身的對象中的特殊變量。當訪問同一對象上的屬性或調用方法時,或者調用外部方法以將該對象作爲參數傳遞時,請使用此方法。
如果您將self
和this
視爲同一件事,則不會有任何問題。當然,由於每種語言只能識別其中的一種語言,因此您不能實際交替使用它們。
如果你習慣用Java編程,認爲self
爲Java的this
。
例如,當您想要參考與該課程相關的內容時,例如,在課程Car,self.wheels
中,您可以在課堂中使用self
。目標C中的
self
是指向當前消息的接收者的指針,因此它與Java中的this
非常相似。
如果您已經定義了一個屬性並使用self.foo = bar將其合成,它會調用已爲您生成的setter。如果你只是做了foo = bar,那麼你不需要通過setter方法就可以分配給你的變量。這意味着,如果財產被宣佈爲保留或同步,您將不會利用保留。
相關:http://stackoverflow.com/questions/1341734/assigning-to-self-in-objective-c – 2010-10-25 20:17:35
而且我認爲人類有天生的自我意識。 – 2010-10-25 22:44:36
看這個偉大的教程http://cocoabugs.blogspot.com/2011/02/understanding-your-objective-c-self.html – 2011-02-21 05:57:25