一段**引發的思考:
@implementation son : father
- (id)init
return self;}
@end
問題1:self 是什麼 ?
1.self 是 oc 提供保留字;
2.self 代表著當前方法的呼叫者;
3.在 - 方法中,self代表著"物件";
4.在 + 方法中,self代表著"類";
5.self 是方法的隱藏的引數變數,指向當前呼叫方法的物件,另乙個隱藏引數是 _cmd,代表當前類方法的selector。
問題2:super 是什麼 ?
1.super 是 oc 提供保留字;
2.super 不是隱藏的引數,它只是乙個"編譯器指示符"。查詢方法時,指定方法查詢的位置在父類。
問題3:[super init] 到底做了什麼 ?
1.遞迴初始化父類物件,直到root物件;
1.整個物件過程中只有乙個物件 self ,不存在父類物件的指標;
2.物件內部不管是 self 還是 super 其訊息主體只有乙個就是 self ,也就是說 self 和 super 指向的是同乙個物件;
3> 在父類初始化失敗的時候,返回nil,終止操作。
問題5:為什麼nslog的輸出都son ?
1.參見 答4 ,結果顯而易見,self 和 super是同乙個實體。
解析:
1.物件導向過程中,子類繼承父類,就擁有了父類所有的屬性方法,乙個完整的類的初始化包括子類初始化和父類初始化。
2.子類 [alloc init] 後,首先這裡只有乙個物件實體self,沒有所謂的父類物件實體super。初始化過程中,父類屬性、方法初始化都屬於子類物件的一部分,super 的指標賦給 self 這一說法是錯的,其實全部指的是該物件的初始位置。
1. 關於 self 和 super 在 oc 中的疑惑與解析(幫助很大)
2. self = [super init] 的學習
3. self = [super init] 的思考
ios開發self的用法
關於什麼時間用self.其實是和obj c的訪問方法有關,不過網上很多人也都這麼解答的,那它為什麼和訪問方法有關?怎麼有關的?並沒有多少人回答出來.同時關於記憶體管理的內容,請大家看旺財勇士的objective c記憶體管理總結 cc專版 有些東西我就不多解釋了.進入正題,我們經常會在官方文件裡看到...
self和super的底層原理
最近列印 nsstringfromclass self class nsstringfromclass super class 是乙個結果,很是納悶。self和super 到底什麼關係和區別?又研究了一遍訊息機制,每次都有一點收穫,但是rumtime簡直不是人看的,那是什麼鬼東西。1.當使用 sel...
五 oc中self與super的基本使用
windows phone 7手機開發 ios培訓 期待與您交流!我們知道大部分oc關鍵字都是以 開頭的,例如,初學者最常見的幾個 inte ce implementation end 等等,但是self與super是oc中為數不多的,前面不加 的關鍵字。一般情況下,我們呼叫乙個方法,包括類方法與物...