当'分析'时,收到警告“调用者此时不拥有的对象的引用计数的不正确减少”。 (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;
}
}
答案 0 :(得分:2)
只需将属性设置为nil
,就像分析仪告诉您的那样,无需在此处释放它。如果您没有保留它,请不要将其保留。
此外,您不应该对点符号获取器返回的内容调用release
。这已在此广泛讨论:Why shouldn't I use the getter to release a property in objective-c?
答案 1 :(得分:0)
最有可能的是,您获取存储在referencesPopup
中的对象的方式,您没有自己分配或保留它。在这种情况下,您不负责发布它。您只需将ivar设置为nil即可。