我正在使用GTMLogger,并且具有以下代码段,由于移至iOS5.1以来似乎崩溃了。我似乎无法复制它,但我知道许多用户都在发生它,所以我不确定如何跟踪它。
[NSConcreteFileHandle writeData:]: Bad file descriptor
我可以尝试/捕获它,但它不是解决方案,而是解决方案。

这是可疑的部分:

NSFileHandle *file = [NSFileHandle fileHandleForUpdatingAtPath:logFilePath];
if (file)
{
    unsigned long long maxFileOffset = [file seekToEndOfFile];
    if (maxFileOffset > kDebugFileMaxSize)
    {
        // read file, trunicate, save, reopen
        [file seekToFileOffset:maxFileOffset - kDebugFileMaxSize];
        NSMutableData *data = [NSMutableData dataWithData:[file readDataToEndOfFile]];
        [file seekToFileOffset:0];
        [file writeData:data];
        [file truncateFileAtOffset:kDebugFileMaxSize];
        [file seekToEndOfFile];
    }
}
else
{
    [[NSFileManager defaultManager] createFileAtPath:logFilePath contents:nil attributes:nil];
    file = [NSFileHandle fileHandleForUpdatingAtPath:logFilePath];
}

有人得到过类似的东西吗?

最佳答案

我最终只是摆脱了GTMLogger,转而使用其他一些记录器,感谢可能阅读过此内容的任何人:)

关于ios - [NSConcreteFileHandle writeData:]:错误的文件描述符-启动时使应用程序崩溃,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9758798/

10-14 16:44