释放不会引起错误

我正在尝试将现有的非ARC项目移至ARC。 我已经将Build Settings中的Objective-C自动引用计数标志设置为YES。

这当然造成了很多关于发送显式释放/自动释放消息的错误。 对于我的代码中的错误,我删除了显式释放消息,dealloc块等。对于在第三方库(如ASIHTTPRequest)中生成的错误,我在Build阶段中为所需文件添加了-fno-objc-arc标志 - 编译源部分。

然而,当我修复所有错误(并且项目编译成功)后,我的代码中仍然有发布声明。

例如,在应用程序委托中,我使用以下内容:

self.loginViewController       = [[LoginViewController alloc] init];
self.window.rootViewController = self.loginViewController;
[self.window makeKeyAndVisible];
[self.loginViewController release];

现在据我所知,这应该会引发一个错误。 但事实并非如此。 该应用程序按预期工作,但留下的问题是内存管理是否在这些文件中正确完成。

AppDelegate.m和LoginViewController.m都没有设置-fno-objc-arc标志,所以它们应该默认为ARC。

当然,我做错了什么。 我应该仔细检查一下?

提前致谢。


我刚刚解决了这个问题。 我使用的是iRate库,它的一个头文件定义了发布和autorelease

#define release self
#define autorelease self

我删除了这些行,问题得到解决。 所以如果你遇到过这样的事情,请检查一些第三方库是否定义了它们。

说真的,哪个体面的程序员会像这样定义“释放”和“自动释放”? 惊人...

链接地址: http://www.djcxy.com/p/72761.html

上一篇: release not raising error

下一篇: refactoring #ifndef