2011-12-20 3 views
0

У меня есть следующий код, где программа NSArray с объектами NSNumber и объектами NSString. После выполнения кода, хотя я подтвердил, что второе условие if выполняется хотя бы один раз (когда [obj isKindOfClass: [NSString class]] истинно), переменные NSMutableSet полностью пусты.NSMutableSet не добавляя объекты

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

Почему?

ответ

8

Вы не создаете NSMutableSet

NSMutableSet *variables = [[NSMutableSet alloc] init]; 

//release later if not ARC enabled 

или более удобным

NSMutableSet *variables = [NSMutableSet set]; 

(спасибо dreamlax за напоминание)

+2

Убедитесь, что вы 'release', что после этого тоже, или в качестве альтернативы использовать '[NSMutableSet set]'. – dreamlax

+0

Эта переменная инициализирована на значение nil означает, что используется ARC, что означает, что вы не можете «освободить». –

+0

ну дух! спасибо ... угадайте, иногда вам просто нужна вторая пара глаз. – birarda