NSMutableSet不添加对象

bir*_*rda 0 cocoa objective-c

我有以下代码,其中程序是带有NSNumber对象和NSString对象的NSArray.在代码执行之后,即使我已经确认第二个if条件至少满足一次(当[obj isKindOfClass:[NSString class]]为真时),NSMutableSet变量也是完全空的.

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

为什么?

Vik*_*ica 8

您没有创建NSMutableSet

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

//release later if not ARC enabled
Run Code Online (Sandbox Code Playgroud)

或者更方便

NSMutableSet *variables = [NSMutableSet set];
Run Code Online (Sandbox Code Playgroud)

(感谢dreamlax提醒我)

  • 确保你之后也"释放",或者使用`[NSMutableSet set]`. (2认同)