所以这就是我所拥有的:
- 带有 NSMutableArray 数据源的 NSTableView
- FSEvents 监视包含包含表视图数据的文件的文件夹(使用SCEvents实现 Objective-C 抽象优势)
- FSEvents 触发与 UI 中的重新加载按钮相同的功能。此函数根据所述文件的内容,使用新的数据源刷新表格视图
setDataSource:
。
这就是发生的事情:
- 如果我对文件进行更改,则会触发 FSEvent 并调用刷新方法。
- 表视图应该接受的数组确实包含触发 FSEvent 的更改。
setDataSource:
使用正确的数据源发送到 NSTableView。- 更改不会出现在表格视图中!
但是之后:
- 如果我点击刷新按钮,它触发与 FSEvent 完全相同的方法,表格视图将使用新数据进行更新。
我还尝试用 NSNotification ( NSApplicationDidBecomeActiveNotification
) 替换 FSEvent,但同样的事情发生了。
有人知道为什么会这样吗?
编辑:为了澄清起见,我的问题的要点是:为什么我的 NSTableView 会在按下按钮触发时重新加载,而不是在由 FSEvent 或 NSNotification 触发时重新加载?
编辑:感谢diciu,我发现实际上我的所有 UI 引用在事件触发时都指向 0x0,但在按钮单击触发时具有有效地址。这些对象都在 IB 中声明,因此在我的代码中没有对它们进行实例化或分配。所以我现在的问题是:我能做些什么来阻止这些指针指向 nil?