因此,我在开放源代码项目中看到了这种方法,这让我感到困惑,为什么当我尝试运行静态分析器时,这种方法不会泄漏内存。我认为它应该泄漏的原因是因为它正在分配内存,但从不释放内存。每次调用该方法时都会释放它(因为= nil)。谁能为我照亮?
- (BOOL)isValid(NSString *)name
{
// Using a set so access is faster
static NSMutableSet *exp = nil;
// Setup the set once with AB testing info
if (exp == nil) {
exp = [[NSMutableSet alloc] initWithCapacity:5];
}
if (exp != nil) {
return YES;
}
return NO;
}
最佳答案
分析器识别static
存储限定符,并了解它没有超出范围(当然,直到终止)。
每次调用该方法时都会释放它(因为= nil)。
不是。这是在第一次调用该方法时发生的-仅一次,因为它是static
。
关于iphone - 为什么这个NSMutableSet不会泄漏内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10250937/