任何人都可以告诉我,为什么当' program'
中有小写字符时,returnSet将返回为nil我已经介入并且NSLog肯定会选择变量,但是当它添加对象时:它只是没有?
+ (NSSet *)variablesUsedInProgram:(id)program
{
NSMutableSet *returnSet = [[NSMutableSet alloc]init];
if ([program isKindOfClass:[NSArray class]]) {
[program enumerateObjectsUsingBlock: ^(id obj, NSUInteger idx, BOOL *stop)
{
if ([obj isKindOfClass:[NSString class]]) {
if ([obj rangeOfCharacterFromSet:[NSCharacterSet lowercaseLetterCharacterSet]].location != NSNotFound) {
NSLog(@"Variable: %@", obj);
[returnSet addObject:obj];
}
}
}];
}
return returnSet;
}
答案 0 :(得分:3)
发布的代码没有错误。它不能返回值nil
。
您的错误在其他地方。
答案 1 :(得分:0)
我猜你的问题是ARC内存管理问题。您发布的代码会返回对其创建的集合的非拥有引用。除非将其保存为强实例变量,否则将取消分配。