2012-01-25 9 views
-1

オブジェクトがnilであるかどうかをテストするロジックがありますが、どうすればnilに設定できますか?iphone ARC - オブジェクトをnilに設定する方法は?

同様:

// in some method 
if (true){ 
[self myObj] = [[myObj alloc]init]; 
} else{ 
[self myObject] = nil; //??? How to do this with Automatic Ref. Counting 
} 

// elsewhere 
if([self myObj]){ 

} 

答えて

3

コードが間違っています。試してみてください:

self.myObject=nil; 
//or 
[self setMyObject:nil]; 

また、myObjectがクラス内のプロパティであることを確認してください。そうでない場合は、selfを使用すると機能しません。

4

あなたのコードが間違っています。

[self setMyObject:nil];または[self setMyObj:[[myObj alloc] init]];のようなプロパティを使用して値を割り当てる必要があります。

2

[self myObj]は左辺値ではありません。これを修正するには、基になる変数を参照するか、 self->myObj、またはプロパティを使用している場合は[self setMyObj:]を使用します。

1

セッターとしてゲッターを使用しています。それはうまくいきません。それはあなたがセッターを実装していると仮定すると、

[self setMyObj:[myObj alloc]init]]; 

そして

[self setMyObj:nil]; 

でなければなりません。あなただけのIVARにアクセスしている場合はARCの下にあなたが本当にする必要はありません - あなたはそれを直接アクセスすることができますし、参照カウントはあなたのために行われます。

myObj = [MyObj alloc] init]; 

そして

myObj = nil; 

を設定しますあなたのためにすべてを削除します。

関連する問題