Ich mag die Struktur dieses Codes.Runtime Overhead von Blöcken für die sofortige Zuweisung von Variablen
NSString *source = ^{
switch ([picker sourceType]) {
case UIImagePickerControllerSourceTypeCamera:
return @"camera";
case UIImagePickerControllerSourceTypePhotoLibrary:
case UIImagePickerControllerSourceTypeSavedPhotosAlbum:
return @"library";
}
}();
es zwingt den Compiler einen Fehler zu werfen, wenn Sie einen neuen Fall zu einem Enum hinzufügen und darüber hier vergessen. dieser Code würde nicht
NSString *source = nil;
switch ([picker sourceType]) {
case UIImagePickerControllerSourceTypeCamera:
source = @"camera";
break;
case UIImagePickerControllerSourceTypePhotoLibrary:
case UIImagePickerControllerSourceTypeSavedPhotosAlbum:
source = @"library";
break;
}
ich weiß nicht, wie teuer der Block Ansatz. ¿weiß jemand den Overhead davon?
Sie können den zweiten Codeblock aufrufen, um eine Compilerwarnung zu verursachen, indem Sie die Warnoption "Check Switch Statements" unter den Buildeinstellungen aktivieren. Dies betrifft natürlich alle "switch" -Anweisungen in Ihrem Code, die Sie möglicherweise nicht möchten. – rmaddy
Warum hat das erste Formular einen Fehler für einen verpassten Fall ausgegeben? – Avi
@Avi Da keine 'Return'-Anweisung erreicht wurde. – rmaddy