ios 必備知識

 

OC必備知識


1、 runtime

1. runtime 是OC語言的特性,表明運行時。它的表現好比:定義一個數組越界,代碼在編譯時並不報錯,可是運行後會崩潰。

2、runloop

2. RunLoop 表示一種運行着的循環

2.1 通常app啓動後,若是不點擊任何控件,不會生成runloop ,它默認是沒有啓動的;

2.2 runloop 會管理一個自動釋放池的建立和釋放,在一個runloop 循環結束時會實現自動釋放池的釋放功能

3、多線程

3. 多線程 包括進程和線程,一個進程能夠包括多個線程。 分異步 、同步; 通常經常使用的有GCD 異步延遲,調用主線程 等;

4、內存管理

4. 內存

4.1 主要有代碼區、堆、棧;堆中動態進行分配和釋放;與堆區別較大的是,棧能夠提早到編譯時就肯定內存地址,而堆不少都是運行時才肯定;

4.2 iOS分ARC和MRR 自動釋放,和手動釋放; 主要涉及引用計數器,強引用,弱引用等知識;

4.3 能夠經過Istrucements對內存泄漏進行調試;

4.4 內存吃緊時,會調用- (void) receiveMermeryWarning ; 最終會調用malloc庫中的free( ) 函數

5、runtime 消息機制

5. runtime的消息機制 OC消息發送與方法發生在運行階段,而非編階段;obj——msgSend

6、鏈表尋址方式

6. 鏈表尋址方式 涉及到算法結構,相似快速比較, 逐個比較

7、代理,block, 通知的區別

7.主要區別

7.1 代理 OC中的代理。 代理運用分爲如下幾步:1.設置代理,分爲必須實現,可選實現;2,設置好後要聲明代理屬性;3.而後在.m文件中 調用代理屬性 4.在其餘類中實現代理方法,5.須要先引用頭文件,6設置代理;7.實現代理方法;

7.2 代理:一對一」,對同一個協議,一個對象只能設置一個代理delegate;

通知:能夠一對多,註冊通知中心後,不在意是否接收;而代理在意實現結果; block:block是一個代碼塊,它在引用時須要主要循環引用,在block外通常聲明 weak self 防止循環引用html

7.3 weak asign copy strong 區別

7.3.1 使用時,assign 通常定義數據類型,strong 通常定義 模型對象;

7.3.2 strong 與 weak 的區別主要是 weak 會隨之對象自己的消失而消失,而strong和copy 不會,同時,strong時引用計數器會 +1 ; copy 時 會先將舊對象release 在賦予新的對象

7.4 OC聲明屬性的關鍵詞;參數 包括了:原子性;讀寫屬性;setter語意方法; atomic多線程訪問下的安全保障,可是浪費資源;nonatomic

禁止多線程,相比atomic節省資源;

<歡迎交流:gtommy0571@gmail.com>web

相關文章
相關標籤/搜索