1

我有一个不在主线程中运行的 NSOperation。它是从 UITableViewController 生成的。操作完成后,由于某些数据已更改,我想重新加载 tableview。我已经为后台设置了一个委托,以便在完成时通知。完成后,我使用 performSelectorOnMainThread 在主线程上专门调用 reloadData 的包装器。

在大多数情况下,这很好用,但是,原始(编辑)tableViewController(/编辑)被释放并且我得到僵尸调用的可能性为非0。

所以问题分为两部分:

  1. 是否可以在不保留对象的情况下从后台线程获得委托?
  2. 这只是一个糟糕的设计吗?我应该改用 NSNotifications 吗?在这种情况下,这会是通知的首选方法吗?

提前致谢。

4

1 回答 1

1

如果有可能在调用委托上的任何操作之前释放委托,则应保留委托。您可以在 tableViewController 中设置一个状态来处理调用委托回调并且不使用 tableViewController 的情况(基本上使回调充当无操作)。操作完成后,只需释放委托对象。

这不是一个糟糕的设计,但您只需要处理这些条件。

于 2011-05-19T18:36:17.133 回答