【发布时间】:2015-09-17 14:11:06
【问题描述】:
最近我遇到了以下问题。
我有一个NSTableView,每行都有按钮。现在,当单击按钮时,事件会转到服务器并返回,表会重新加载新数据。因此,如果您单击按钮两次,速度非常快,但您按住第二次单击,并且在释放单击表后将重新加载,因为第一个事件是应用程序崩溃,因为消息发送到已释放的行视图实例。我找到了这次崩溃的三种解决方案:
- 由于第一个事件,单击后禁用按钮并在重新加载表格时启用。
- 消息发送到按钮时更改事件(onMouseUp 到 onMouseDown)。
- 将所有行视图保留在附加数组中,以防止它们被释放,这是我认为最糟糕的一种,因为这样的数组增长得非常非常快。
启用僵尸对象后,我在崩溃时得到了以下信息:
[RowView performSelector:withObject:]: message sent to deallocated instance 0x11177d1b0
我正在使用 ARC。
你们中有人知道如何解决这个问题吗?
【问题讨论】:
-
你在使用完成块吗?你的数组是
nonatomic吗? -
两个问题都是。
标签: objective-c macos nstableview