標籤:c中 zed 函數 特性 構造 cto 簽名 calayer tla
1、CALayer有哪些子類?用途?
2、有哪些常見的 Crash 情境?
3、@protocol 和 category 中如何使用 @property
4、什麼是 method swizzling?
5、如何讓自己的類用 copy 修飾符?如何重寫帶 copy 關鍵字的 setter?
6、iOS簽名機制大概是怎樣的?
答案:
1、CALayer有哪些子類?用途?
CAShaperLayer
CAGradientLayer: 顏色過渡
CAEmitteryLayer :粒子效果
CATransformLayer:給圖層加景深效果,構造一個層級分明的3D結構。
CAReplicatorLayer:圖層複製
CAScrollLayer
CATiledLayer:為節省記憶體渲染開銷提供了途徑
CATextLayer:
CAEAGLLayer:
AVPlayerLayer: 播放視頻
2、有哪些常見的 Crash 情境?
數組越界
訪問了殭屍對象。已經被釋放掉的對象
訪問野指標. EXC_BAD_ACCESS.
訪問了不存在的方法. unrecognized selector
多線程並行作業
在定時器下一次回調前將定時器釋放
3、@protocol 和 category 中如何使用 @property
objc_setAssociatedObject/ objc_setAssociatedObject
4、什麼是 method swizzling?
簡單說就是進行方法交換
在Objective-C中調用一個方法,其實是向一個對象發送訊息,尋找訊息的唯一依據是selector的名字。利用Objective-C的動態特性,可以實現在運行時偷換selector對應的方法實現,達到給方法掛鈎的目的
每個類都有一個方法列表,存放著方法的名字和方法實現的映射關係,selector的本質其實就是方法名,IMP有點類似函數指標,指向具體的Method實現,通過selector就可以找到對應的IMP。
selector --> 對應的IMP
交換方法的幾種實現方式
利用 method_exchangeImplementations 交換兩個方法的實現
利用 class_replaceMethod 替換方法的實現
利用 method_setImplementation 來直接設定某個方法的IMP。
5、如何讓自己的類用 copy 修飾符?如何重寫帶 copy 關鍵字的 setter?
6、iOS簽名機制大概是怎樣的?
5、如何讓自己的類用 copy 修飾符?如何重寫帶 copy 關鍵字的 setter?
若想令自己所寫的對象具有拷貝功能,則需實現NSCopying協議。如果自訂的對象分為可變版本與不可變版本,那麼就要同時實現NSCopyiog與NSMutableCopying協議。
6、
https://www.jianshu.com/p/ad29445eb91c
iOS 面試題