2013-02-07 51 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一样。)

相关问题