@interface NeverInstanciatedClass
+ (MyDelegateClass *) delegate;
+ setDelegate: (MyDelegateClass* <MyProtocol>) delegate;
@end
@implementation
static MyDelegateClass <MyProtocol> *_delegate;
+ (MyDelegateClass *) delegate {
return _delegate;
}
+ setDelegate: (MyDelegateClass* <MyProtocol>) delegate {
_delegate = delegate;
}
@end
(从头开始 - 从未编译或语法检查)
如果您不使用 ARC,那么您可能需要添加一些内存管理。但是当你使用时(weak)
,我假设你使用 ARC。
如果您完全使用协议,那么您不需要完全符合条件MyDelegateClass* <MyProtocol>
。id <MyProtoco>
应该做。我之所以这样做,是因为您在代码片段中这样做了。当您访问协议中声明的方法(并且您应该只访问方法)时,甚至不需要知道它是什么类型的对象。您(和编译器)只需要知道它实现了协议。