我在工作中继承了一个 iPhone 应用程序,而且我是 Objective-C 的新手,所以我还没有掌握我的方向。我遇到了类似这样的代码:
- (void) dealloc {
[[StaticObject sharedObject] showSomeDialog];
[super dealloc];
}
我知道这在其他语言中是不受欢迎的。看着那段代码,我的蜘蛛感觉快疯了。
这是一个常见的 Objective-C 习惯用法吗?还是我有一个糟糕的代码库要修复?
我在工作中继承了一个 iPhone 应用程序,而且我是 Objective-C 的新手,所以我还没有掌握我的方向。我遇到了类似这样的代码:
- (void) dealloc {
[[StaticObject sharedObject] showSomeDialog];
[super dealloc];
}
我知道这在其他语言中是不受欢迎的。看着那段代码,我的蜘蛛感觉快疯了。
这是一个常见的 Objective-C 习惯用法吗?还是我有一个糟糕的代码库要修复?
您不应该将 UI 代码放在 -dealloc 中。一般的经验法则,只使用 -dealloc 来清理你所做的:释放对象,删除观察者等。
考虑一下如果这个对象存在于主线程以外的线程上会发生什么……现在您将在非主线程上运行 UI 代码,这是一件坏事。
出于某些调试原因,您可以这样做。但我认为你永远不应该做这样的事情!这意味着在释放对象时会提示一个对话框。因此,如果您需要任何机制在某个时间显示对话框,请不要使其依赖于正在释放的对象。在 dealloc 方法中,您实际上应该只释放被释放对象保留的所有对象。并且不做一些花哨的应用程序功能。