iphone - 为什么这个NSMutableSet不会泄漏内存

标签 iphone objective-c ios ipad memory-management

因此,我在开放源代码项目中看到了这种方法,这让我感到困惑,为什么当我尝试运行静态分析器时,这种方法不会泄漏内存。我认为它应该泄漏的原因是因为它正在分配内存,但从不释放内存。每次调用该方法时都会释放它(因为= 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/

相关文章:

iphone - 'self' 未设置为结果时使用的实例变量

iphone - iOS扑克牌

ios - NSMutable 字典无法正常工作

objective-c - 拆分 RACSignal 以消除状态

ios - Swift 3 的部分截图

iphone - iPad 上图像的最佳尺寸是多少?

jquery Iphone itunes 滚动效果

iphone - 粘贴的代码不能在新项目中工作?

ios - 在 XCode 4.2 中添加 ARCHS_STANDARD_32_BIT = armv6 armv7 是否安全?

iphone - 如何仅从结果集中获取用户名