Xcode静态分析仪在使用单例时的性能

时间:2011-07-15 21:49:03

标签: ios xcode cocoa-touch cocoa

我无法理解XCode中的静态分析器如何识别可能涉及单例的泄漏。在下面的代码中,我收到警告,第一行可能存在泄漏,并且在第一个return语句中也是如此。分析器将这些警告放在第二个返回语句中。由于我在这些行中没有进行分配,我认为它是对单例的访问,以及它可能的分配,这会导致此警告。任何人都可以向我解释静态分析仪在这里发生了什么?

        if ((self.tableView.editing & ([[[[GroupList sharedGroupList] newGroup] linkArray] count] < [[GrazeConstants sharedGrazeConstants] maxLinksPerGroup])) | 
            (([[[[GroupList sharedGroupList] newGroup] linkArray] count] == 0) & !self.tableView.editing)) {
            return ([[[[GroupList sharedGroupList] newGroup] linkArray] count]+1);
        } else {
            return ([[[[GroupList sharedGroupList] newGroup] linkArray] count]);
        }

1 个答案:

答案 0 :(得分:4)

new - 根据Cocoa内存管理约定,前缀方法等同于alloc + init对。静态分析器假设您的newGroup方法返回的是具有+1保留计数的对象,而不是自动释放的对象。

重命名方法(例如,groupmakeGroup),或者如果您无法更改名称,请添加NS_RETURNS_NOT_RETAINED attribute