【发布时间】:2013-05-14 13:10:28
【问题描述】:
我的代码看起来像这样,有时应用程序在尝试记录错误时会在最后一行崩溃。我做错了什么?
BOOL isDir;
NSError *error;
NSString *downloadPath = [[NSString stringWithFormat:@"%@/%@", [download downloadFolder], [download escapedTitle]] stringByExpandingTildeInPath];
NSFileManager *fileManager = [NSFileManager defaultManager];
if (![fileManager fileExistsAtPath:downloadPath isDirectory:&isDir])
{
[fileManager createDirectoryAtPath:downloadPath withIntermediateDirectories:YES attributes:nil error:&error];
if (error)
NSLog(@"%@", [error localizedDescription]);
}
我还附上了控制台的输出:
【问题讨论】:
-
@Wain 虽然这可能适用于大多数实际目的,但不能保证它有效,因为在方法执行期间指针可能会更改为无效值。
error的值只有在方法返回NO时才有效。 -
@gaige 没错,它不应该发生,但它确实会发生。
-
@Wain 不,没有理由将
error指针初始化为nil,并且使用if (error) ...永远无效。
标签: objective-c nserror