34

これは、以前にカスタム保持セッターを作成するために使用した方法です。

- (void)setMyObject:(MyObject *)anObject
{
   [_myObject release], _myObject =  nil;
   _myObject = [anObject retain];

   // Other stuff
}

プロパティがstrongに設定されている場合、ARCでこれをどのように達成できますか。変数に強力なポインターがあることを確認するにはどうすればよいですか?

4

2 に答える 2

66

strongivarレベルでそれ自体を処理するので、単に行うことができます

- (void)setMyObject:(MyObject *)anObject
{
   _myObject = anObject;
   // other stuff
}

以上です。

注:自動プロパティなしでこれを行う場合、ivarは次のようになります

MyObject *_myObject;

その後、ARCが保持と解放を処理します(ありがたいことに)。__strongデフォルトでは修飾子です。

于 2012-04-06T02:00:02.527 に答える
5

答えを要約するだけです

.hファイル

//If you are doing this without the ivar
@property (nonatomic, strong) MyObject *myObject;

.mファイル

@synthesize myObject = _myObject;

- (void)setMyObject:(MyObject *)anObject
{
    if (_myObject != anObject)
    {
        _myObject = nil;
        _myObject = anObject;
    }
    // other stuff
}
于 2012-12-10T06:00:11.447 に答える