81.Foundation對象與Core Foundation對象有何區別?Foundation對象是OC的,Core Foundation對象是C對象。數據類型之間的轉換:ARC:_bridge_retained、_bridge_transfer非ARC:_bridge 82、不用第三變量,交換AB的值。A=A+BB=A-BA=A-B或者A=A^BB=A^BA=A^B 83.簡單描述下對單例模式設計的理解?節省內存資源,一個應用就一個對象。 84.runtime實現的機制是什么?怎么用,一般用于干嘛。運行時機制,runtime庫里面包含了跟類、成員變量、方法相關的API,比如獲取類里面的所有成員變量,為類動態添加成員變量、動態改變類的方法實現,為類動態添加新的方法等,需要導入①.runtime,運行時機制,它是一套C語言庫。
②.實際上我們編寫的所有OC代碼,最終都是轉換成為了runtime庫的東西,比如類轉換成了runtime庫里面的結構體等數據類型,方法轉換成了runtime庫里面的C語言函數,平時調方法都是轉成了objc_msgSend函數(所以說OC有個消息發送機制)
③、因此,可以說runtime是OC的底層實現,是OC的幕后執行者。
④、有了runtime庫,能做什么呢?可以獲取類里面的所有成員變量、為類動態的添加成員變量、動態的改變類的方法實現、為類動態添加新的方法等等。
85.是否使用Core Text 或者 Core Image ?
Core Text
隨意修改文本的樣式
圖文混排(純C語言)
Core Image(濾鏡處理)
能夠調節圖片的各種屬性(對比度、色溫、色差等)
86、NSNotification和KVO的區別和用法是什么?什么時候應該使用通知,什么時候應該使用KVO,他們的實現有何區別?如果用protocol和delegate來實現類似的功能可能嗎?可能的話有何問題?不可能的話why?
通知比較靈活,一個通知能被多個對象接受,一個對象可以接受多個通知。
代理不交規范,但是代碼較多(默認是一對一)
KVO性能不好(底層會產生新的類),只能監聽某個對象屬性的變化,不推薦使用。
87、block內部的實現原理。
Objective-C是對C語言的擴展,block的實現是基于指針和函數指針。
88、怎么解決緩存池滿的問題?
iOS中不存在緩存池滿的情況,通常在對象需要創建時才創建,比如UITableView中一般只會創建剛開始在屏幕中的cell,之后都是從緩存池里取,不會再創建新對象。
89、控制器View的生命周期及相關函數是什么?你在開發中是如何使用的?
1、首先判斷控制器是否有視圖,如果沒有就調用loadView方法創建:通過storyBoard或者代碼。
2、隨后調用viewDidLoad,可以進行下一步的初始化操作,只會被調用一次。
3、在視圖顯示之前調用viewWillAppear,該函數可以多次調用。
4、視圖viewDidAppear
5、在布局變化前后,調用viewWill/DidLayoutSubViews處理相關信息。
90、有些圖片加載比較慢怎么處理?你是怎么優化程序的性能的?
①、圖片下載放在異步線程。
②、圖片下載過程使用占位圖片。
③、如果圖片比較大,可以使用多線程斷點下載。