昨天调试一个程序,需要在Cache目录下新建子目录,代码如下
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSString *libDirectory = [paths objectAtIndex:0];
NSString *path = [libDirectory stringByAppendingPathComponent:Kache_Objects_Disk_Path];
if (! [[NSFileManager defaultManager] fileExistsAtPath:path isDirectory:YES]) {
NSError *error;
[[NSFileManager defaultManager] createDirectoryAtPath:path
withIntermediateDirectories:YES
attributes:nil
error:&error];
NSLog(@"error:%@", error);
}
}
结果在if判断的时候,path变量直接报BAD_ACCESS了,打印对象只有一段地址,没有内容了。但是字这行执行之前,path还是好的。
求解
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
因为第2个参数是BOOL *,是一个指针,而不是一个值。
正确的用法是
BOOL isDirectory; BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:path isDirectory:&isDirectory]; if(fileExists && isDirectory) { ... }