8

我在工作中继承了一个 iPhone 应用程序,而且我是 Objective-C 的新手,所以我还没有掌握我的方向。我遇到了类似这样的代码:

- (void) dealloc {
    [[StaticObject sharedObject] showSomeDialog];

    [super dealloc];
}

我知道这在其他语言中是不受欢迎的。看着那段代码,我的蜘蛛感觉快疯了。

这是一个常见的 Objective-C 习惯用法吗?还是我有一个糟糕的代码库要修复?

4

2 回答 2

7

您不应该将 UI 代码放在 -dealloc 中。一般的经验法则,只使用 -dealloc 来清理你所做的:释放对象,删除观察者等。

考虑一下如果这个对象存在于主线程以外的线程上会发生什么……现在您将在非主线程上运行 UI 代码,这是一件坏事

于 2010-07-23T13:57:57.017 回答
0

出于某些调试原因,您可以这样做。但我认为你永远不应该做这样的事情!这意味着在释放对象时会提示一个对话框。因此,如果您需要任何机制在某个时间显示对话框,请不要使其依赖于正在释放的对象。在 dealloc 方法中,您实际上应该只释放被释放对象保留的所有对象。并且不做一些花哨的应用程序功能。

于 2010-07-23T13:53:43.860 回答