2013-02-07 52 views
0

編譯器向我顯示警告,因爲'photo'的本地聲明隱藏了實例變量。 我不明白髮生了什麼事。'photo'的本地聲明隱藏實例變量

// PTKData.h 

@interface PTKData : NSObject { 

    UIImage *photo; 
} 

@property (nonatomic, retain) UIImage *photo; 

- (void) doSomething: (UIImage *)photo; 

@end 

// PTKData.m 

@synthesize photo = _photo; 

- (void) doSomething: (UIImage *)photo { 

    _photo = photo; 
} 

在我的理解,@synthesize照片= _photo現有的方法相同的局部變量的名字命名時,照片_photo。 我找不到在我的代碼中導致警告的問題。

預先感謝您。

+0

因爲你聲明瞭UIImage * photo;在你的.h類中改變它並聲明任何其他名字 –

+2

正如@Sudha指出的,你有兩個伊娃的:'photo'(在頂部聲明)和'_photo',當你合成'photo'時會自動創建。 – lnafziger

+0

謝謝。它解決了。 – MonsterK

回答

2

在代碼中,要創建雙伊娃的:

一本線在頂部:

UIImage *photo; // Creates an ivar called photo 

,第二個,當你合成photo

@synthesize photo = _photo; // Creates an ivar called _photo 

我猜測你只想要第二個,並且可以簡單地刪除整個第一行。 (它與self.photo根本無關,就像_photo一樣。)

相關問題