0

'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に変更します。コードで警告の原因となっている問題を探すことができません。

前もって感謝します。

4

1 に答える 1

2

コードでは、2 つの ivar を作成しています。

上部に次の行があるもの:

UIImage *photo;  // Creates an ivar called photo

そして、合成するときの2番目のものphoto

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

2 番目の行だけが必要で、最初の行全体を単純に削除できると思います。self.photo(とにかく、まったく関連付けられていません_photo。)

于 2013-02-07T05:16:27.097 に答える