web-dev-qa-db-ja.com

目的C-ARCを使用したカスタムセッター?

これは、以前にカスタムretainedセッターを作成する方法です。

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

   // Other stuff
}

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

34
aryaxt

strongはivarレベルで自動的に処理されるため、単に

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

以上です。

注:自動プロパティなしでこれを行っている場合、ivarは

MyObject *_myObject;

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

66
Dan Rosenstark

答えを要約するだけです

.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
}
5
Adithya