iOS開發(fā):oc編程(1)-GeekBand

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容