编译器向我显示警告,因为'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 在方法中存在相同的本地变量名称时,将照片重命名为 _photo 。 我无法在代码中查找导致警告的问题。
提前谢谢。
答案 0 :(得分:2)
在你的代码中,你创建了两个ivar:
顶部有一条线:
UIImage *photo; // Creates an ivar called photo
合成photo
时的第二个:
@synthesize photo = _photo; // Creates an ivar called _photo
我猜你只想要第二个,并且可以简单地删除整个第一行。 (根本不与self.photo
相关联,例如_photo
。)