3
我正在寫一個記錄器類轉發到方法(誰不?),用方法捕獲在ObjC不確定的消息,並將其與不同的簽名
- (void) logWithTag:(NSString *)aTag andMessage:(NSString *)aMsg;
我希望能夠轉發未定義的消息到這個方法。例如:
[myLogger logFoo:@"bar"] should call [myLogger logWithTag:@"Foo" andMessage:@"bar"]
和更一般
[myLogger logXXX:@"bar"] should call [myLogger logWithTag:@"XXX" andMessage:@"bar"]
我已經看了resolveInstanceMethod
和消息轉發,但是從我的理解,他們都期望該方法具有相同的簽名。
有什麼想法? 謝謝!
謝謝!我也不得不調用methodSignatureForSelector:但它的工作方式像一個魅力(除了編譯器抱怨logXXX不存在,但我想我可以忍受這一點)! –
哎呀我打算警告你這個警告,你需要做的就是將記錄器作爲類型('id')。如果您的記錄器是由單身人士返回,那麼只需在那裏將返回類型更改爲'id'。 – Joe
@Joe:如果方法沒有在任何地方聲明,那麼不管你怎麼稱呼它,你都會得到一個不存在的警告。 – user102008