1.oc簡介
1.打印hello world?
2.clong llvm的應(yīng)用理解
2.類與對象
(一)
兼容c
類型系統(tǒng):引用類型 指類型 類型裝飾
(二)
棧(stack)和堆(heap)
1.棧:
無ARC負擔,
空間大小在編譯結(jié)束后即確定
函數(shù)結(jié)束時,棧立即銷毀
2.堆:存儲引用類型對象
有arc機制
引用函數(shù)通過拷貝指針進行傳遞
容易產(chǎn)生內(nèi)存泄漏
內(nèi)存泄漏:如果我們不人為地對它們進行回收,只“借”不“還”,那么系統(tǒng)資源就會枯竭,電腦的運行速度就會越來越慢,直至整個系統(tǒng)崩潰。我們把這種只申請空間不釋放空間的情況稱為內(nèi)存泄露(memroy leak)
重點:
畫內(nèi)存圖
3.數(shù)據(jù)成員:屬性和實例變量
循環(huán)引用 :導致內(nèi)存泄漏 solve way:@property(weak)
3.數(shù)據(jù)成員:屬性與實例
4.函數(shù)成員:方法
(一)認識方法method
1.所有方法都是公有方法。無類似C++的public private protected等方法
(二)實例方法或類型方法
1.
實例方法:參數(shù)前為-號 如:-(void) print;
類型方法:參數(shù)前為+號
2.
self指針
類型方法:僅僅是當前一個類的表示,不表示實例
實例方法:傳遞的是實例方法的指針
(三)方法參數(shù)
1.
參數(shù)名:分為內(nèi)部、外部參數(shù)名。
-(void) moveTox:(int)x toY(int)y
第一個參數(shù)名不需要外部參數(shù)名
駝峰命名法
2.
類型:
值類型:
引用類:傳的是指針
無參數(shù)/無返回值
(四)動態(tài)方法調(diào)用機制-消息分發(fā)表:
id:聲明所有的類型。
id obj=[[BLNPoint alloc] init];
[obj moveTox:50 toY:60];
內(nèi)存:灰色部分 包含一個methodLists :查找機制,if方法過多,oc提供一種優(yōu)化的方法,犧牲性能,帶來靈活。
5.初始化器與析構(gòu)器
(一)初始化器:
1.對象初始化器
init:-自定義
(1).調(diào)用父類初始化器-前置調(diào)用
如下:
self = [super init];
if(self){
}
(2).init初始化器內(nèi)部使用實例變量,不要使用屬性。
(3).指定初始化器與便捷初始化器的使用區(qū)別
還需注意:
Book *b1 = [[Book alloc] init];
Book *b1 = [Book alloc];
[b1 init];某些情況下b1返回的指針與b1不一樣
應(yīng)該如下寫:b1 =[b1 init];
alloc:-NSObject已經(jīng)實現(xiàn)
1.在堆上分配合適的大小和內(nèi)存
2.屬性或者內(nèi)存變量置0
new:
1.無法傳遞參數(shù)-無參數(shù)版本的alloc、init 初始化器。
2.類初始化器-initialize
1.系統(tǒng)自動調(diào)用
2.每個類僅調(diào)用一次。
(二)對象析構(gòu)器:
dealloc