我喜欢这段代码的结构。
NSString *source = ^{
switch ([picker sourceType]) {
case UIImagePickerControllerSourceTypeCamera:
return @"camera";
case UIImagePickerControllerSourceTypePhotoLibrary:
case UIImagePickerControllerSourceTypeSavedPhotosAlbum:
return @"library";
}
}();
如果你向枚举添加一个新案例并在这里忘记它,它会强制编译器抛出错误。 这段代码不会
NSString *source = nil;
switch ([picker sourceType]) {
case UIImagePickerControllerSourceTypeCamera:
source = @"camera";
break;
case UIImagePickerControllerSourceTypePhotoLibrary:
case UIImagePickerControllerSourceTypeSavedPhotosAlbum:
source = @"library";
break;
}
我不知道块方法的成本有多高。 ¿有谁知道这个的开销?
答案 0 :(得分:1)
您的代码严重破坏。你似乎在Swift和Objective-C之间感到困惑。您的问题是您在第二个代码中忘记了break语句。不要将完整的代码与破碎的代码进行比较。修复第二个示例,然后检查在添加枚举值时是否确实没有给出错误。