0

编译器向我显示警告,因为“照片”的本地声明隐藏了实例变量。我不明白发生了什么事。

// 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重命名为_photo 。我无法在我的代码中查找导致警告的问题。

先感谢您。

4

1 回答 1

2

在您的代码中,您正在创建两个 ivar:

顶部有这一行:

UIImage *photo;  // Creates an ivar called photo

合成时的第二个photo

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

我猜你只想要第二个,并且可以简单地删除整个第一行。self.photo(无论如何,它根本没有关联,就像_photo是。)

于 2013-02-07T05:16:27.097 回答