NSProxy為什麼不繼承NSObject?
02-06
如果面試時面試官問
你知道哪些類是不繼承自NSObject的?以及這樣做的原因是什麼?時,應該如何回答為什麼NSProxy不繼承NSObject?
謝邀,第一次被邀請,受寵若驚。
居然正好是我上個星期剛研究過的問題。首先第一個問題:不繼承自NSObject的官方類據我所知只有NSProxy,當然理論上你也可以自定義一個不繼承於NSObject的根類,雖然平常一般不這樣做。第二個問題:簡單說就是不需要實現那麼多雜七雜八的東西,多了反而可能引起衝突,比如KVC,NSProxy根本就不需要了。NSProxy主要目的是用forwardInvocation:方法來進行消息轉發,如果繼承NSObject容易導致衝突,所以你看看NSProxy的API就會發現相比NSObject來說太簡潔了。而NSProxy是遵循了NSObject協議(注意這裡是NSObject協議,不是類)的,裡面聲明了一套所有的根類都可以實現的基礎方法。題主可以參考下這幾篇博文:NSObject:類與協議
NSProxy一些理解輕鬆學習之 Objective-C消息轉發推薦閱讀:
TAG:iOS | iOS開發 | ObjectiveC | Swift語言 |