2010-06-10 6 views
26

Ich weiß, BOOL ist eigentlich ein Typdef signierten Char. Aber was ist mit Boolean? Ich bin verwirrt von Bool, Boolean und BOOL .... Q QGibt es einen Unterschied zwischen BOOL und Boolean in Objective-C?

+0

Objective-C hat keinen Typ namens "Boolean" oder "bool", können Sie Ihre Frage klären? –

+0

Ich weiß nicht, Boolean erscheint in CF-Bibliothek ... – Frost

+0

Sicher es tut. Es ist C, also hat es auch diese. Und C++ Zeug. – uchuugaka

Antwort

42

Boolean ist ein altes Kohl Schlüsselwort (historischer Mac-Typ), als unsigned char definiert. BOOL ist ein Objective-C-Typ definiert als signed char. bool ist eine definierte Version des _Bool Standard-C-Typs. Es ist definiert als int. Verwenden Sie BOOL.

+6

'Boolean' wird in CoreFoundation verwendet (welches Carbon ist meistens auf dem neuesten Stand), also wenn Sie BOOL in objective-C verwenden sollten, wird Boolean immer noch benutzt, wenn Sie mit CoreFoundation APIs arbeiten. – bobDevil

+1

Oh, ich sehe, also sollte ich BOOL für die allgemeine Verwendung und Boolean in CF verwenden. Vielen Dank! – Frost

+0

Hoppla, du hast Recht. CoreFoundation definiert eine Version von "Boolean", aber das ist unabhängig von Carbon's Definition. Siehe MacOSTypes.h vs. OSTypes.h. Und auf 64-Bit-Systemen, die nicht C99 verwenden, ist CoreFoundations "Boolean" ein "unsigned char". –

Verwandte Themen