代码之家  ›  专栏  ›  技术社区  ›  TalkingCode

目标C:错误的bool和bool?

  •  2
  • TalkingCode  · 技术社区  · 15 年前

    我已经发现bool是C型的,而bool是客观C型的。bool可以是真的也可以是假的,bool可以是是是或不是

    对于初学者来说,很难区分这些类型。如果我使用bool而不是bool,会发生什么坏事吗?

    3 回复  |  直到 15 年前
        1
  •  5
  •   Quinn Taylor    15 年前

    BOOL 是一个 signed char ,同时 bool 是一个 int (事实上,它是 typedef 'D在达尔文,用C99之前的标准进行编译时也是如此)。在这里,可以遵循整数类型之间升级/降级的通常考虑事项。

        2
  •  4
  •   Neil    15 年前

    而你 可以 为了满足自己的需要,可以不使用bool而使用bool,您可能会遇到将“bool”传递给其他对象(如公共API方法)的问题。在编写Objective-C代码时,您应该坚持使用bool,主要是为了将来的校对。

    但是我认为如果你这样做的话什么都不会爆炸,这是非常不推荐的,也不遵循任何客观C的惯例。

    作为旁注,bool的yes或no格式是一种建议,我有一个坏习惯,把bool设置为true或false(注意全部大写),这没问题。也可以使用1或0。

    这些都是有效的:

    BOOL myBool;
    myBool = YES;   // true
    myBool = TRUE;  // true
    myBool = 1;     // true
    myBool = NO;    // false
    myBool = FALSE; // false
    myBool = 0;     // false
    
        3
  •  0
  •   user150168    15 年前

    在常见情况下(将其设置为yes/1或0/no),兼容性问题不太可能出现。

    我建议您参考文档了解其他情况下的差异: http://developer.apple.com/documentation/Cocoa/Reference/ObjCRuntimeRef/Reference/reference.html#//apple_ref/doc/c_ref/BOOL