【发布时间】:2014-12-25 09:36:01
【问题描述】:
我应该使用 Objective-C 来读取一些增长缓慢的文件(在 Mac OS X 下)。
“慢慢地”意味着我在 EOF 变大之前读到它。
使用普通同步 C 中的 POSIX 代码,我可以这样做:
while(1)
{
res = select(fd+1,&fdset,NULL,&fdset,some_timeout);
if(res > 0)
{
len = read(fd,buf,sizeof(buf));
if (len>0)
{
printf("Could read %u bytes. Continue.\n", len);
}
else
{
sleep(some_timeout_in_sec);
}
}
}
现在我想以某种异步方式重写它,使用 NSInputSource 或其他异步 Objective-C 技术。
NSInputSource 的问题:如果我使用 scheduleInRunLoop: 方法,那么一旦我收到 NSStreamEventEndEncountered 事件,我就会停止接收任何事件。
我还可以使用 NSInputSource 还是应该以某种方式使用 NSFileHandle 或者你会推荐什么?
【问题讨论】:
标签: objective-c c macos