daw*_*awg 1 methods null cocoa objective-c
我一直在研究 Apple低级文件部分中使用目录枚举器中的示例.
这是一段代码:
for (NSURL *url in enumerator) {
// Error-checking is omitted for clarity.
NSNumber *isDirectory = nil;
[url getResourceValue:&isDirectory forKey:NSURLIsDirectoryKey error:NULL];
if ([isDirectory boolValue]) {
NSString *localizedName = nil;
[url getResourceValue:&localizedName forKey:NSURLLocalizedNameKey error:NULL];
NSNumber *isPackage = nil;
[url getResourceValue:&isPackage forKey:NSURLIsPackageKey error:NULL];
if ([isPackage boolValue]) {
NSLog(@"Package at %@", localizedName);
}
else {
NSLog(@"Directory at %@", localizedName);
}
}
Run Code Online (Sandbox Code Playgroud)
}
为什么localizedName,isPackage以及isDirectory被设置为nil之前有关调用的getResourceValue方法?这只是一个过分谨慎还是需要这个?
当我阅读文档时,getResourceValue:forKey:error:它似乎是多余的:
返回值如果成功填充了值,则返回YES; 否则,不.
如果未为URL定义请求的资源值,则将讨论值设置为nil.在这种情况下,该方法仍然返回YES.
我错过了什么吗?
此代码不检查getResourceValue:forKey:error:方法是否实际成功.相反,假设传递的变量在方法失败时设置为nil或保持不变.这可能不是一个有保证的假设; 似乎没有记录失败时的行为.
如果它们未事先初始化,"保持不变"将通过使用未初始化的堆栈变量导致未定义的行为.
| 归档时间: |
|
| 查看次数: |
448 次 |
| 最近记录: |