[ios]我如何指定委托一类 (不是实例) 考虑我不能使用属性?

发布时间: 2017/3/21 23:11:28
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我已经为我自定义的类,定义一种Protocol,现在我想给它一个委托。将不会实例化类,仅用于其类方法。委托类,然而,已被实例化,并且分配给一个常量。如果我被实例化的类,我会让它指其委托像这样︰

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

但因为我不实例化的类,我不能给它的属性。那么如何做请参阅其委托Getter 方法吗?这样的事情吗?我还需要定义二传手?

+ (<MyProtocol>MyDelegateClass *)delegate;

这里的语法是什么?

解决方法 1:

@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。

如果你在所有使用Protocol,那么您不需要完全限定 MyDelegateClass* <MyProtocol> . id <MyProtoco> 应该做的。我只是这样做,因为是你在你的 sniplets。 当你访问的方法 (和你应该然后访问方法只) 声明在Protocol中,没有必要,即使知道它是什么类型的对象。你 (和编译器) 需要知道的就是它实现议定书 》。

官方微信
官方QQ群
31647020