iOS:initWithDelegate消息和编译器警告太多

时间:2011-06-16 15:45:59

标签: iphone ios delegation

我的一个视图控制器依赖于几个每个都有initWithDelegate:方法的类。视图控制器在所有情况下都是委托。我在所有对

的调用中收到编译器警告
[[ONE_OF_FOUR_CLASSES] alloc] initWithDelegate:self];

除了第一个(首先加载谁的头文件)。

所有其他人都给出了“从yy分配给xx的不兼容指针类型”警告。 yy永远是4个班级中的第一个。

然而,一切都运行良好。那么如何抑制这些警告呢?这是一个LLVM错误吗?

3 个答案:

答案 0 :(得分:0)

听起来好像类型不匹配或编译器不知道。不要忘记将init - 方法的签名添加到.h文件中并导入它们。检查他们是否返回iddelegate的类型为id(至少大部分时间都是这样)。

如果不能解决问题,请随意编辑您的问题以包含更多代码。

答案 1 :(得分:0)

我发现一种简单的方法来抑制警告就是执行以下操作:

[(ONE_OF_FOUR_CLASSES *)[ONE_OF_FOUR_CLASSES alloc] initWithDelegate:self];

这个强制转换使编译器能够实现+(id)alloc调用的返回值不是'id',而实际上是你的ONE_OF_FOUR_CLASSES。

答案 2 :(得分:0)

请注意alloc返回id,因此编译器不知道[CLASS_1 alloc]返回CLASS_1类型的对象。它通常推断类型正确,不添加警告,但有时它不会。我通常的解决方案是演员。丑陋,但它确实有效。

[(CLASS_1*)[CLASS_1 alloc] initWithDelegate:self];