这是我想做的事情:

id<MyDelegate> _delegate;
....
[_delegate performSelectorOnMainThread...]

@protocol MyDelegate <NSObject>
....

我的问题是,performSelectorOnMainThread是在NSObject的类别中定义的,因此编译器无法识别它。我得到:
“警告:在协议中找不到'-performSelectorOnMainThread:withObject:waitUntilDone:'”
我可以委托代表,但这样做会破坏委托的目的。有什么建议?

最佳答案

将您的代表声明为NSObject<MyDelegate> * _delegate;

这告诉编译器_delegate必须是NSObject的实例或必须响应MyDelegate协议要求的子类。

关于objective-c - 从Objective-C中具有类别的类扩展协议(protocol),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3722469/

10-10 23:24