收到警告“调用者此时不拥有的对象的引用计数减少不正确”

时间:2011-10-12 13:29:22

标签: objective-c xcode4

当'分析'时,收到警告“调用者此时不拥有的对象的引用计数的不正确减少”。 (xCode 4.1 +)

我可以理解,从一个正确的班级“杀死”一个对象会更好,但有没有办法在没有警告的情况下从外面做到这一点?

谢谢!

NSLog(@"--[%s:%d]",__PRETTY_FUNCTION__, __LINE__);
myAppDelegate* appDelegate = [[UIApplication sharedApplication] delegate];
   if (appDelegate.referencesPopup != nil) {
        [appDelegate.referencesPopup release]; // warning
        appDelegate.referencesPopup = nil;  
   }      
}

2 个答案:

答案 0 :(得分:2)

只需将属性设置为nil,就像分析仪告诉您的那样,无需在此处释放它。如果您没有保留它,请不要将其保留。

此外,您不应该对点符号获取器返回的内容调用release。这已在此广泛讨论:Why shouldn't I use the getter to release a property in objective-c?

答案 1 :(得分:0)

最有可能的是,您获取存储在referencesPopup中的对象的方式,您没有自己分配或保留它。在这种情况下,您不负责发布它。您只需将ivar设置为nil即可。