2011-12-20 2 views
0

私は、プログラムがNSNumberオブジェクトとNSStringオブジェクトを持つNSArrayである次のコードを持っています。コード実行後、2回目の条件が少なくとも1回満たされていることを確認したにもかかわらず([obj isKindOfClass:[NSString class]]がtrueのとき)、NSMutableSet変数は完全に空です。オブジェクトを追加しないNSMutableSet

NSMutableSet *variables; 
if ([program isKindOfClass:[NSArray class]]) { 
    for (id obj in program) { 
     if ([obj isKindOfClass:[NSString class]]) { 
      [variables addObject:obj]; 
     } 
    } 
} 

なぜですか?

答えて

8

あなたは、あまりにも後で必ず `release`ことを確認します(おかげで私を思い出させるためにdreamlaxする)

+2

をNSMutableSet

NSMutableSet *variables = [[NSMutableSet alloc] init]; //release later if not ARC enabled 

以上の便利

NSMutableSet *variables = [NSMutableSet set]; 

を作成していません代わりに '[NSMutableSet set]'を使用してください。 – dreamlax

+0

'variables'がnilに初期化されているということは、ARCが使用中であることを意味します。つまり、' release'できません。 –

+0

まあまあ!おかげさま...時々あなたは目の第二のペアが必要になると思います。 – birarda

関連する問題