我有一个不在主线程中运行的NSOperation。它是从UITableViewController生成的。操作完成后,我想重新加载tableview,因为一些数据已经改变。我已经为背景设置了代表,以便在完成时通知。完成后,我使用performSelectorOnMainThread专门在主线程上调用reloadData的包装器。
在大多数情况下,这很有效,但是,原始(编辑)tableViewController(/ edit)有一个非0的机会被释放,我得到僵尸调用。
所以问题分为两部分:
提前致谢。
答案 0 :(得分:1)
如果在调用委托上的任何操作之前可能会释放委托,则应保留委托。您可以在tableViewController中设置一个状态来处理调用委托回调并且不使用tableViewController的情况(基本上使回调充当no-op)。完成操作后,只需释放委托对象。
这不是一个糟糕的设计,但你只需要处理这些条件。