2016-04-15 11 views
0

Boy私は愚かだと感じますか?ここでは私が理解できないプログラミング101の質問があります。iOSのBOOLとboolの比較

BOOL MOMisCompatible = [self.objectModel isConfiguration:nil compatibleWithStoreMetadata:existingPersistentStoreMetadata]; 

    NSLog(@"%d", (unsigned)MOMisCompatible); // A 

    if(MOMisCompatible){ 
     NSLog(@"The MOM is compatible."); // B 
    } 
    else{ 
     NSLog(@"ARGH! The MOM is incompatible."); // C 
    } 

NSLogは、期待通りAで1または0を出力します。 しかし、BもCも何も出力しません。 ブレークポイントをAに設定してデバッグしますが、コードはAまたはBに決して落ちません。 何が欠けていますか?

+1

Hmmm;それは意味をなさない。それが実際のコードだと確信していますか? – trojanfoe

+0

ログが印刷されたにもかかわらず、ブレークポイントにヒットしなかったことが一度ありました。 '.h'ファイルの代わりに' .m'ファイルをどこかに入れたかどうか確認してください。 – dasdom

+0

[This(http://stackoverflow.com/questions/541289/objective-c-bool-vs-bool)答えは可能な限り上記の方法を説明しています。 – Sam92

答えて

1

多分、typedefに関連するものがあります。 "BOOL"は署名されたcharで、そのヘッダーはobjc.hです。一方、 "bool"はヘッダーstdbool.hを持つintです。したがって、それを(符号なし)にキャストしようとすると、実際に動作します。

+0

それは意味をなさない。値が '0'または' 1'を出力している場合、 'if'文はその型にかかわらず動作するはずです。 – trojanfoe

+0

NOT arm64のtypedef signed charです。デバッガを停止できません – Injectios

関連する問題