2012-03-02 7 views
0

私はARCを使用するときにオブジェクトのライフサイクルの周りに頭を抱えようとしています。基本的に、私はベストプラクティスは.hファイルでグローバルに宣言したときのオブジェクトを管理することであるものを見つけることができません:今ARC:オブジェクトのライフサイクルの終わりにはどのようにしてdeallocを行うのですか?

@interface MyClass : UIViewController { 
    NSArray *arrayA; 
} 

@property (strong) NSArray *arrayB; 

私が理解から、arrayAとarrayB両方が強いとして宣言されているので、彼らがリリースされますそれらが= nilに設定されている場合、または別のオブジェクトを参照するように変更された場合。 MyClassのオブジェクトがリリースされたときにもリリースされますか?または、deallocをオーバーライドしてそれらをすべてゼロに設定する必要がありますか?私の推測では、プロパティはリリースされますが、arrayAは解放されません。

すべてのプロパティを使用することは意味をなさない。コード内のさまざまなメソッドから使​​用する必要がある保持オブジェクトをプライベートに保つためのベストプラクティスは何ですか?

+1

コードは問題ありません。 'arrayA 'は' MyClass'が解放された時に解放されます。 –

答えて

3

MyClassのオブジェクトがリリースされても解放されますか?

いいえ。MyClassオブジェクトが割り当て解除されると自動的に解放されます。しかしこれは良いことであり、それはあなたが望むものです。

すべてのプロパティを使用することは意味をなさない。コード内のさまざまなメソッドから使​​用する必要がある保持オブジェクトをプライベートに保つためのベストプラクティスは何ですか?

インスタンス変数は直接使用できます。 ARCはすべての作業を行うために必要な保持/解放を行います。

+0

ありがとうございます! – imw

0

実際、あなたが探しているのは私有財産だと思います。このようプライベート@interfaceを使用して、あなたの.mファイル内でそれらを宣言します。

@interface myClass() 
@property (strong, nonatomic) NSArray *arrayWithSemanticName; 
@end 

@implementation myClass 
// my class goes here 
... 
@end 

:)

編集:

またIBOutletsIBActionsとして、それらを設定し、Interface Builderので動作しますIBからそれらをドラッグするのと同じようにうまく動作します。

関連する問題