最適化オプションで挙動が変わります。BOOL値を返すメソッドをオーバーライドしたときにreturn書き忘れてはまった…。
#import <Foundation/Foundation.h>
@interface Hoge : NSObject
@end
@implementation Hoge
+(BOOL)hoge {
NSLog(@"Say hoge"); // 何か関数を呼ぶ
// return 書き忘れる
}
@end
int main(int argc, const char * argv[])
{
@autoreleasepool {
NSLog(@"Return value: %d", [Hoge hoge]);
}
return 0;
}
- None [-O0]
Return value: 0
- Fastest, Smallest [-Os]
Return value: 51
-Osオプションだと最後に呼んだ関数の何かが返る。GCCでもこういうのあるんですかね。