今日はすぐにブロックで遊んでいたところ、エラーが発生しました。
NSString *(^testBlock)(int) = ^(int option) {
if (option == 1) return @"ONE";
if (option == 2) return @"TWO";
return nil;
};
NSLog(@"OUTPUT: %@", testBlock(4));
Return type 'void *' must match previous return type 'NSString *' when block literal has unspecified explicit return type
「1」または「2」が入力されていない場合は本当にnilを返したかったので、次を使用して最終的な戻り値をNSStringにキャストすることにしました。
NSString *(^testBlock)(int) = ^(int option) {
if (option == 1) return @"ONE";
if (option == 2) return @"TWO";
return (NSString *) nil;
};
これは問題なく機能します。これが正しい解決策なのか、それとも悪い習慣なのか、これまでnilをキャストすることを考えたことがなかったので、興味がありましたか?