[英]How do I designate a delegate for a class (not an instance) considering I can't use properties?
我为自定义类定义了一个协议,现在我想给它一个委托。 该类不会实例化,仅用于其类方法。 但是,委托类已实例化并分配给一个常量。 如果我要实例化该类,则可以让它像这样引用其委托:
@property (weak) MyDelegateClass <MyProtocol> *delegate;
但是因为我没有实例化该类,所以无法赋予它属性。 那么,我该如何称呼它的代表呢? 吸气方法? 像这样吗 我还需要定义一个二传手吗?
+ (<MyProtocol>MyDelegateClass *)delegate;
这里的语法是什么?
@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>
应该可以。 我这样做是因为您在代码段中做到了。 当您访问协议中声明的方法(然后应该只访问方法)时,甚至不需要知道它是什么类型的对象。 您(以及编译器)只需要知道它实现了协议即可。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.