我有这样的错误处理代码:
if (ERROR) {
NSLog(@"<some message>");
exit(-1);
}
使用NSLog记录的消息并不总是出现在控制台中,可能是因为exit()终止了进程而没有刷新NSLog的缓冲区。我怎样才能自己刷新NSLog的缓冲区?
答案 0 :(得分:4)
尝试以下方法:
if (ERROR) {
NSLog(@"<some message>");
fflush(stderr);
exit(-1);
}
但您不应在生产代码中使用exit
,因为Apple Human Interface Guidelines清楚地说明了这一点:
从不以编程方式退出iOS应用程序,因为人们倾向于将此解释为崩溃。但是,如果外部环境阻止您的应用程序按预期运行,您需要告知用户有关情况并解释他们可以采取的措施。根据应用程序故障的严重程度,您有两种选择。
答案 1 :(得分:1)
考虑一下:
[someMessage writeToFile:@"/dev/stderr" atomically:NO
encoding:NSASCIIStringEncoding error:nil];