'photo'的本地声明隐藏了实例变量

时间:2013-02-07 05:03:24

标签: objective-c properties synthesize

编译器向我显示警告,因为'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 。 我无法在代码中查找导致警告的问题。

提前谢谢。

1 个答案:

答案 0 :(得分:2)

在你的代码中,你创建了两个ivar:

顶部有一条线:

UIImage *photo;  // Creates an ivar called photo

合成photo时的第二个:

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

我猜你只想要第二个,并且可以简单地删除整个第一行。 (根本不与self.photo相关联,例如_photo。)