@protocol Eating
@end
@interface Eat : NSObject<Eating>
{
}
- (id<Eating> *)me;
@end
@implementation Eat
- (id<Eating> *)me { return self; }
@end
在上面的Objective-C代码中,为什么“返回self”导致“从不兼容的指针类型返回”警告?什么是不兼容的指针类型以及如何解决它?
答案 0 :(得分:13)
因为id
本身就是一个指针,所以你不需要星号。
@interface Eat : NSObject<Eating> {
}
- (id<Eating>)me;
@end
答案 1 :(得分:2)
好的..答案是“id”而不是“id *”。
答案 2 :(得分:1)
因为id
基本上是NSObject *
(尽管存在一些细微差别)。因此,当您返回self
时,您将返回-(NSObject *)
。你所拥有的是id *
,就像NSObject **
。
答案 3 :(得分:0)
删除id *并替换为id。 id已经是一个指针。
答案 4 :(得分:0)
你的使用稍微偏离 - 它是:
- (id<Eating>)me { return self; }
(因为你要返回id,而不是指向对象的指针)。