dealloc 方法从 Xcode 4 中的 ViewController 实现文件模板中消失了吗?

Posted

技术标签:

【中文标题】dealloc 方法从 Xcode 4 中的 ViewController 实现文件模板中消失了吗?【英文标题】:dealloc method gone from the ViewController implementation file template in Xcode 4? 【发布时间】:2011-08-02 15:23:20 【问题描述】:

我是 ios 开发新手。

从我正在阅读的书中了解到,Outlets 需要在 ViewController 实现文件(.m)中的两个地方发布。

像这样:

- (void)viewDidUnload 
    self.statusText = nil;


- (void)dealloc 
    [statusText release];
    [super dealloc];

Apple 会在您创建新项目时自动将这两个方法(viewDidUnload 和 dealloc)添加到实现文件中。

但是,我注意到新的 Xcode 4 似乎没有“dealloc”方法?

这是我应该手动添加的内容,还是 Apple 取消了在两个地方发布网点的需要?

有人知道吗?谢谢!

【问题讨论】:

嗯,这似乎不对:如果 viewDidUnloaddealloc 之前被调用(它可能会这样做),那么 statusText 永远不会被释放(因为释放消息被发送到 nil ) @bosmacs self.statusText = nil; 将释放对象 对不起,属性语法把我弄丢了。 【参考方案1】:

您很可能创建了一个使用新 ARC(自动引用计数)的项目,因此不需要 dealloc 方法,因为使用此选项进行编译时不再允许调用 retainrelease

【讨论】:

我的 outlet 在头文件中声明,如下所示 @property (nonatomic, retain) IBOutlet UILabel *statusText;我应该如何声明它们是正确的吗?我没有收到来自调试器的错误 @FreeAsinBeer 是正确的,您正在正确地声明它们。在 ARC 下,您仍然需要以这种方式声明属性才能获得属性的好处并进行综合

以上是关于dealloc 方法从 Xcode 4 中的 ViewController 实现文件模板中消失了吗?的主要内容,如果未能解决你的问题,请参考以下文章

xcode 4.1 中的释放函数

Viewcontroller Dealloc 方法永远不会被调用

为啥当我尝试在 ios 7.1 sdk、xcode 5.1 中调用 deallocate 或 release 时出现错误?

dealloc方法

没有在 UIViewController 上调用 Deinit,但 Dealloc 是

xcode工程编译错误:"An instance 0xca90200 of class UITableView was deallocated while key value observe