我正在做一些实验,得出类似的结论:
MyClass<aProtocol> *anInstance;
稍后在代码中出于各种原因:
anInstance = [[MyFilterClass alloc] init];
所有编译器都会产生警告。
Incompatible pointer types assigning to 'MyClass<aProtocol> *' from 'MyFilterClass *'
这会以任何我无法弄清楚的方式影响程序吗?
现在可以正常工作,因为MyFilterClass的设计考虑到了这一点。
答案 0 :(得分:1)
MyClass
和MyFilterClass
是不同的类,这是编译器所抱怨的。
如果它们都符合aProtocol
,则将变量声明为:
id<aProtocol> *anInstance;
然后这两项任务都是可能的:
anInstance = [[MyClass alloc] init];
anInstance = [[MyFilterClass alloc] init];