我知道在目标c中声明变量的类型时,您可以执行以下操作之一:
id obj0;
MyClass *obj1;
id<MyProtocol> obj2;
我感到好奇的是,这是否有效(语法和语义上):
MyClass<MyProtocol> *obj3;
我想要的是存储一个必须在这个变量中实现给定协议的cocoa类;如果我控制了“MyClass”我不需要这个,但我基本上想知道我是否可以摆脱不必制作我自己的抽象类,其他多个不同的类需要继承,当它们可以否则只能继承“ MyClass“直接。
答案 0 :(得分:3)
是
MyClass<MyProtocol> *obj3;
表示obj3
应该是指向MyClass
类型的对象或子类的指针,它也实现MyProtocol
。