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