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 取消了在两个地方发布网点的需要?
有人知道吗?谢谢!
【问题讨论】:
嗯,这似乎不对:如果viewDidUnload
在 dealloc
之前被调用(它可能会这样做),那么 statusText
永远不会被释放(因为释放消息被发送到 nil )
@bosmacs self.statusText = nil;
将释放对象
对不起,属性语法把我弄丢了。
【参考方案1】:
您很可能创建了一个使用新 ARC(自动引用计数)的项目,因此不需要 dealloc 方法,因为使用此选项进行编译时不再允许调用 retain
或 release
。
【讨论】:
我的 outlet 在头文件中声明,如下所示 @property (nonatomic, retain) IBOutlet UILabel *statusText;我应该如何声明它们是正确的吗?我没有收到来自调试器的错误 @FreeAsinBeer 是正确的,您正在正确地声明它们。在 ARC 下,您仍然需要以这种方式声明属性才能获得属性的好处并进行综合以上是关于dealloc 方法从 Xcode 4 中的 ViewController 实现文件模板中消失了吗?的主要内容,如果未能解决你的问题,请参考以下文章
Viewcontroller Dealloc 方法永远不会被调用
为啥当我尝试在 ios 7.1 sdk、xcode 5.1 中调用 deallocate 或 release 时出现错误?
没有在 UIViewController 上调用 Deinit,但 Dealloc 是
xcode工程编译错误:"An instance 0xca90200 of class UITableView was deallocated while key value observe