2014-04-02 64 views
0

我是Objective C的新手,並使用IOS開發人員庫學習類擴展。在Customize existing class中,我被要求創建一個readonly屬性,然後創建一個與readwrite屬性相同的類擴展。客觀的C類擴展。無法爲讀取屬性賦值

//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
-(NSInteger) measureHeight 
{ 
    self.height = 100; 
    return self; 
} 

self是一個對象,而不是NSInteger。也許你想return self.height呢?

錯誤消息你」重新接收是不言自明的:

返回從結果類型的函數「XYZPerson *」「NSInteger的」

顯然意味着你沒有返回正確的事情。

+0

謝謝!這是一個偉大的提示!這刪除了警告。但是,現在當我嘗試NSLog self.height和self.weight結果仍然是0(非空)。我的NSLos在同一個XYZPerson.m文件中。有什麼建議嗎? –