他のコメントの中には、BAD_ACCESSの問題が記述されています。ここには何か他のことがあります。 ARCでは、あなたのイヤーズは、他に認定されていない限り強力です(ARC以外では、あなたのためにリリースされません)。例えば
、このARCコードを使用すると、他の回答にコメントで報告していないBAD_ACCESSと、正常に動作します:
@interface ArcTestViewController()
{
NSMutableArray *_someArray;
}
@end
@implementation ArcTestViewController
- (void)dealloc
{
_someArray = nil;
}
- (void)viewDidLoad
{
[super viewDidLoad];
_someArray = [[NSMutableArray alloc] initWithObjects:@"Mo", @"Larry", @"Curly", nil];
}
- (IBAction)checkIvarTouchUpInside:(id)sender
{
NSLog(@"%s _someArray = %@", __FUNCTION__, _someArray);
}
@end
あなたはそれのであなたのBAD_ACCESSを取得している場所を私達にあなたの例を表示する必要がある場合があります何か他のものでなければならない。
「プロパティ」または「ivar」の質問に対する回答では、「常にプロパティを使用する」引数に同感していますが、個人的に私は外部アクセサを提供する必要があるものはすべてプロパティを使用し、 ivars(.hではなく、.mファイルのプライベートインタフェース)。これにより、私の.hファイル内の私の公開インターフェースは、実際にきれいになり、数か月後に戻ってくると分かりやすくなります。 「常にプロパティを使用する」アプローチを採用する場合は、そのプロパティの公開宣言を可能な限り制限するようにアドバイスするだけです(できる場合はプロパティを非公開にし、不在の場合はプロパティの公開宣言を読みやすくする読み書きアクセスなどを提供する必要がありません)。
ちなみに、ココアのコーディングガイドラインのNaming Properties and Data Typesはベストプラクティスの参考になります。
出典
2012-07-03 17:44:41
Rob
ありがとう、私はARCがどのようにプロパティで動作するかを理解していますが、私の質問は実際にローカル変数をプライベートプロパティに置き換える必要があるかどうかを判断することです。 –
@BillKervaski:一般的に、はい。編集 – houbysoft
を参照してください必要がない限り、明示的に変数を宣言しないことをお勧めします。プロパティを使用し、iVarに直接アクセスする必要がある場合は、プロパティを合成するときにivarの名前を設定することができます。たとえば:@synthesize myProperty = __myVariable – isaac