2012-03-07 10 views
0

ここで非常に混乱して...なぜ私のNSLogは、 "COUNTは0 IS" 見せているなぜNSMutableArrayのカウントサイズが0になっていますか?

Section *sectionName = [[Section alloc] init]; 
[[sectionName content] addObject:@"test"]; 
[[sectionName content] addObject:@"test2"]; 
[[sectionName content] addObject:@"test3"]; 

NSLog(@"COUNT IS %i", [[sectionName content] count]); 

私はNSMutableArrayのプロパティで "セクション" と呼ばれるNSObjectのサブクラスは、 "コンテンツ" と呼ばれている

+0

をあなたはcontent' 'のプロパティ宣言を投稿することができますし、それを変更する 'Section'のコードはどれですか? –

答えて

2

あなたのサブクラスでcontentを初期化していますか?そうでない場合、それは問題になる可能性があります!

あなたのinitメソッドは次のようになります。

- (id)init 
{ 
    if (self = [super init]) 
    { 
     _content = [[NSMutableArray alloc] init]; 
    } 
    return self; 
} 

あなたのdeallocは次のようになります。ARCを使用していない場合:

- (void)dealloc 
{ 
    [_content release]; 
    [super dealloc]; 
} 
+1

OPがARCを使用していない場合、これはメモリリークです –

+0

ええ、OPは間違いなく' content'を 'dealloc'メソッドの中で解放するべきです。 – dom

+1

OPがARCを使用していない場合でもメモリリークはありません。 'alloc/init'は+1保持され、' content'は 'retain'と宣言されていなければなりません。もう一つの+1で、あなたは' dealloc'で一度だけ解放します。 –

2

contentの内部をSectionに初期化していますか? - content = [[NSMutableArray alloc] init];のようなことをしていますか?

これが役立つかどうかは分かりません。

1

NSMutableArrayを割り当てる必要がありますが、これは通常この問題の原因です。あなたのSection.mで

- (id) init { 
    //... 
    content = [[NSMutableArray alloc] init]; 
    //... 
} 
+1

'init'メソッドはあまり安全ではない –

関連する問題