我是Objective C的新手,并使用IOS Developer Library学习了Class Extensions。在Customize existing class中,我被要求创建一个只读属性,然后创建一个与readwrite具有相同属性的类扩展。
//XYZPerson.h
@property (readonly) NSInteger height;
@property (readonly) NSInteger weight;
-(NSInteger) measureHeight;
-(NSInteger) measureWeight;
//XYZPerson.m
@interface XYZPerson() //class extension
@property (readwrite) NSInteger height;
@property (readwrite) NSInteger weight;
@end
@implementation XYZPerson
-(NSInteger) measureHeight
{
self.height = 100;
return self;
}
-(NSInteger) measureWeight
{
self.weight = 80;
return self;
}
我的目标是分配身高和体重值。当我构建时,我得到一个编译器警告:不兼容的指向整数转换的指针返回' XYZPerson * const __strong'来自具有结果类型的函数' NSInteger' (又名'长')"当我运行程序时,高度和重量值为0;
我在将值赋给NSInteger属性的语法错了吗?
答案 0 :(得分:0)
-(NSInteger) measureHeight
{
self.height = 100;
return self;
}
self
是一个对象,而不是NSInteger
。也许您想要return self.height
代替?
您收到的错误消息不言自明:
返回' XYZPerson *'来自结果类型为' NSInteger'
的函数
显然意味着你没有回复正确的事情。