2013-02-11 20 views
0

任何一個可以建議我什麼doesNotRecognizeSelect _cmd會做無法知道doesNotRecognizeSelector _cmd

- (NSDictionary*)Event:(EventBase*)eventBase 
{ 
    [self doesNotRecognizeSelector:_cmd]; 
    return nil; 
} 

[self doesNotRecognizeSelect:_cmd];沒有自我的方法調用但其通話,可以任何一個有關於_cmd想法doesNotRecognizeSelect

+0

我假設你試圖執行一個抽象類或什麼東西?如果你真的需要這樣做,最好拋出一個異常,這樣做會讓事情變得非常混亂。另外,大寫的Objective-C方法名稱是社區上的瘟疫,請停止:) – 2013-02-11 10:33:49

回答

0
- (void)doesNotRecognizeSelector:(SEL)aSelector 

aSelector是_cmd

它聲明方法沒有被接收器實現或識別。

只要對象接收到無法響應或轉發的aSelector消息,運行時系統就會調用此方法。此方法反過來引發NSInvalidArgumentException,並生成錯誤消息。

- (id)copy 
{ 
    [self doesNotRecognizeSelector:_cmd]; 
} 

_cmd變量是一個隱藏的參數傳遞給每個方法是當前選擇器;在這個例子中,它標識了複製方法的選擇器。此代碼阻止子類的實例響應複製轉發複製消息的消息或超類 - 儘管respondsToSelector:仍會報告接收方有權訪問複製方法。

相關問題