Objective-C:@propertyのNSArrayの中身が消える
2013/03/02
category: Objective-C | tag: Objective-C, trap | no comments
@propertyでretainを指定しているにもかかわらず、いつの間にか中身が消えてしまうNSArrayのインスタンス。
retainが正しく指定できていなかったようです。
1 2 3 4 5 |
@interface SampleClass : NSObject @property (nonatomic, retain) NSArray *array; @end |
selfを付けない場合 (間違い)
1 2 |
_array = @[ @"abc", @"def", @"ghi" ]; printf("retainCount : %d\n", [_array retainCount]); |
以下のように表示される。
retainCount : 1
selfをつけた場合 (正解)
1 2 |
self.array = @[ @"abc", @"def", @"ghi" ]; printf("retainCount : %d\n", [self.array retainCount]); |
以下のように表示される。
retainCount : 2
どちらも同じ結果になると思っていましたが、違いました。
retainさせるためには、プロパティにself.を付けて指定する必要が有るようです。
# オブジェクト以外もself.の形式で統一した方が良いんだろうか?
コメントを残す
コメントを投稿するにはログインしてください。