有人可以向我解释为什么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版本
答案 0 :(得分:1)
任何人都可以向我解释为什么Analyze会给我一个内存泄漏警告 for(nonatomic,assign)“newNonStaleStories”
因为名称以“new”为前缀而Memory Management Rules表示名称以“new”开头的方法的调用者拥有返回的对象。