你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS 捕獲未知方法的調用,避勉拋出異常

iOS 捕獲未知方法的調用,避勉拋出異常

編輯:IOS開發綜合

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)aSelector

forwardInvocation:

由子類重載,用於前轉消息到其它對象。
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];
    }
}









  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved