最初のスニペットは ARC の下で問題なく、2 つの方法のうち優れています。Apple の ARCガイドへの移行 には、次のような例があります。
- (void)contrived {
Person *aPerson = [[Person alloc] init];
[aPerson setFirstName:@"William"];
[aPerson setLastName:@"Dudney"];
[aPerson setYearOfBirth:[[NSNumber alloc] initWithInteger:2011]];
NSLog(@"aPerson: %@", aPerson);
}
そして言います:
Person
ARC は、オブジェクトもNSNumber
オブジェクトもリークしないようにメモリ管理を行います。
edのsetYearOfBirth:
付いたメッセージは、スニペットに対応しています。alloc
NSNumber
コンパイラは、最初のケースでaPerson
は範囲外になり、それが発生する前に解放する必要があることを理解し、2 番目のケースでは、オブジェクトへの明示的な参照がなく、NSNumber
オブジェクトを解放するか配置する必要があることを認識します。自動解放プール。あなたに代わって、これらの両方の要件を処理します。