Objective C类扩展。无法为readwrite属性赋值

时间:2014-04-02 12:37:03

标签: objective-c

我是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属性的语法错了吗?

1 个答案:

答案 0 :(得分:0)

-(NSInteger) measureHeight
{
    self.height = 100;
    return self;
}

self是一个对象,而不是NSInteger。也许您想要return self.height代替?

您收到的错误消息不言自明:

  

返回' XYZPerson *'来自结果类型为' NSInteger'

的函数

显然意味着你没有回复正确的事情。