(我發現somequestions討論的想法,但我沒有看到我的問題的解決方案。)添加類方法NSObject的,但得到警告,因爲它不是在<NSObject>協議時,我把它稱爲
我將此便捷方法作爲NSObject的一個類別添加。 (我已經添加了其他方法,所以我仍然有興趣在回答中,即使你有這種特殊的便捷方法不以爲然。)
@implementation NSObject (MyCategory)
- (void)performInvocationOnMainThread:(NSInvocation *)invocation waitUntilDone:(BOOL)waitForMainThread;
@end
然後,我有我定義了一個協議:
@protocol MyDelegateProtocol <NSObject>
- (void)myDelegateProtocolMethod;
@end
然後我將該委託聲明爲實現所述協議的我的類的屬性。
但是,當我嘗試調用NSObject的方法,我在類中添加像這樣
NSInvocation *invocation = [self.delegate invocationForSelector:@selector(someSelector:withArg:)];
我得到這樣的警告
'-performInvocationOnMainThread:waitUntilDone:' not found in protocol(s)
如果我投我的委託作爲(NSObject *)
後來我不要接受警告。我究竟做錯了什麼?似乎我沒有(或者應該?)將方法添加到現有協議中,而不創建「子協議」並從此開始使用它。 (哪一種失敗記添加方法NSObject中的點。)
NSInvocation *invocation = [(NSObject *)self.delegate invocationForSelector:@selector(someSelector:withArg:)];
此外,類別通常定義附加執行,這協議有無關。 – BoltClock 2011-05-16 21:25:09