在Xcode的Analyze工具中帮助处理不一致的(?)内存泄漏警告

时间:2011-07-29 12:46:54

标签: objective-c xcode memory-leaks warnings

有人可以向我解释为什么Analyze在返回语句中给我一个内容泄漏警告(nonatomic,assign)“newNonStaleStories”:

-(NSArray *)newNonStaleStories
{
    @synchronized (LIBRARY_ACCESS_LOCK)
    {
        newNonStaleStories = [self.managedObjectContext executeFetchRequest:self.newNonStaleStoriesInDescendingIndexOrderFetchRequest error:nil];
    }

    return newNonStaleStories;
}

但是这里没有给出(非原子,分配)“staleStories”的任何警告:

-(NSArray *)staleStories
{
    @synchronized (LIBRARY_ACCESS_LOCK)
    {
        staleStories = [self.managedObjectContext executeFetchRequest:self.staleStoriesInDescendingIndexOrderFetchRequest error:nil];
    }

    return staleStories;
}

事实上,在同一个类中有几个其他属性getter方法使用完全相同的模式,并且它们都没有内存警告。

(FWIW,“managedObjectContext”和每种情况下的获取请求都是(非原子的,保留)。)

谢谢!

P.S。这是Xcode for Lion的当前(v.4.1)Mac App Store版本

1 个答案:

答案 0 :(得分:1)

  

任何人都可以向我解释为什么Analyze会给我一个内存泄漏警告   for(nonatomic,assign)“newNonStaleStories”

因为名称以“new”为前缀而Memory Management Rules表示名称以“new”开头的方法的调用者拥有返回的对象。