1

我已经为我的自定义类定义了一个协议,现在我想给它一个委托。该类不会被实例化,仅用于其类方法。但是,委托类已被实例化并分配给一个常量。如果我正在实例化这个类,我会让它像这样引用它的委托:

@property (weak) MyDelegateClass <MyProtocol> *delegate;

但是因为我没有实例化这个类,所以我不能给它属性。那么我如何引用它的代表呢?吸气剂方法?像这样的东西?我还需要定义一个setter吗?

+ (<MyProtocol>MyDelegateClass *)delegate;

这里的语法是什么?

4

1 回答 1

0
@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>应该做。我之所以这样做,是因为您在代码片段中这样做了。当您访问协议中声明的方法(并且您应该只访问方法)时,甚至不需要知道它是什么类型的对象。您(和编译器)只需要知道它实现了协议。

于 2013-03-30T00:36:53.550 回答