2

我很新,Cocoa/Objective-C所以希望我只是错过了一些东西。看起来这应该是一个相当普遍的情况。这一切都适用于 Mac 应用程序。

我有一个NSTableView它的委托实现

-(NSView *)tableView:(NSTableView *)table viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row

-(NSInteger)numberOfRowsInTableView:(NSTableView *)tableView

我遇到的问题是,我加载到列中的数据是通过 Web 服务的异步调用和NSStreamDelegate. 此时我显然无法返回我的列视图,因为我还没有数据来正确设置它。

我曾尝试使用以下代码,但由于它位于主线程上,因此有时似乎会将其锁定。

...
NSDate *loopUntil = [NSDate dateWithTimeIntervalSinceNow:0.1];
while (!callDone && [[NSRunLoop currentRunLoop] runMode: NSDefaultRunLoopMode beforeDate:loopUntil])
    loopUntil = [NSDate dateWithTimeIntervalSinceNow:0.1];

return rslt;

有没有其他人不得不处理这种情况?

谢谢!

4

1 回答 1

1

我没有尝试过,但我认为您应该能够创建一个空数组(或字典,无论您需要什么来构建数据),并且当应用程序第一次打开您的表格视图时,您的表格视图将为空(但我没有认为它会崩溃)。下载数据后,将其添加到该空数组并在表格视图上调用 reloadData。

于 2012-05-17T04:04:07.267 回答