標籤:android style blog class code tar
iOS 捕獲未知方法的調用,避勉拋出異常
太陽火神的美麗人生 (http://blog.csdn.net/opengl_es)
本文遵循“署名-非商業用途-保持一致”創作公用協議
轉載請保留此句:太陽火神的美麗人生 - 本部落格專註於 敏捷開發及移動和物聯裝置研究:iOS、Android、Html5、Arduino、pcDuino,否則,出自本部落格的文章拒絕轉載或再轉載,謝謝合作。
NSObject 對象是 Objecitve-C 中的根類,其有以下兩個方法,在調用 NSObject 及其子類的方法不存在時,會將這個調用封裝成 NSInvocation * 類型,試圖傳遞給 forwardInvocation: 方法,如果原方法調用的對象重載了forwardInvocation: 方法,forwardInvocation: 方法就會被調用。
forwardingTargetForSelector: 的真正用途,從官網的描述中,還是未完全體會其可用的情境,只是後一方法在做反射處理時到時用到過,參見 “iOS 實現的 json 資料來源的 O-R Mapping”。
forwardingTargetForSelector:
返回未知訊息首先應該轉向的對象。
Returns the object to which unrecognized messages should first be directed.
- (id)forwardingTargetForSelector:(SEL)aSelectorforwardInvocation:
由子類重載,用於前轉訊息到其它對象。
Overridden by subclasses to forward messages to other objects.
- (void)forwardInvocation:(NSInvocation *)anInvocation
- (void)forwardInvocation:(NSInvocation *)invocation { SEL orignalSelector = [invocation selector]; if ([friend respondsToSelector:orignalSelector]) { [invocation invokeWithTarget:friend]; } else { [super forwardInvocation:invocation]; }}