Swift中的达尔文布尔型是什么

Swift中的达尔文布尔型是什么,swift,Swift,我用一些Swift代码编写了Boolean而不是Bool,Xcode让我用DarwinBoolean替换它 问题是,DarwinBoolean到底是什么 与Bool和ObjCBool类型相比有什么区别。 它的目的是什么?不幸的是,除了前一个答案中发布的部分之外,没有关于达尔文布尔运算的真正文档 一般来说,当你想使用数学函数时,可以使用达尔文包,它可以通过基础包分开或访问。 DarwinBoolean的值与正常布尔值相同,对或错。简短回答: Bool是真值的本机Swift类型 DarwinBoo

我用一些Swift代码编写了
Boolean
而不是
Bool
,Xcode让我用
DarwinBoolean
替换它

问题是,
DarwinBoolean
到底是什么

Bool
ObjCBool
类型相比有什么区别。
它的目的是什么?

不幸的是,除了前一个答案中发布的部分之外,没有关于达尔文布尔运算的真正文档

一般来说,当你想使用数学函数时,可以使用达尔文包,它可以通过基础包分开或访问。
DarwinBoolean的值与正常布尔值相同,对或错。

简短回答:

  • Bool
    是真值的本机Swift类型
  • DarwinBoolean
    是“历史”C类型
    Boolean
    的快速映射
  • ObjCBool
    是Objective-C类型
    BOOL
    的快速映射
您可以在Swift代码中使用
Bool
,除非有其他类型 与现有核心基础的互操作性要求 目标-C功能


有关达尔文布尔的更多信息
DarwinBoolean
在Swift中定义为

/// The `Boolean` type declared in MacTypes.h and used throughout Core
/// Foundation.
///
/// The C type is a typedef for `unsigned char`.
public struct DarwinBoolean : BooleanType, BooleanLiteralConvertible {
    public init(_ value: Bool)
    /// The value of `self`, expressed as a `Bool`.
    public var boolValue: Bool { get }
    /// Create an instance initialized to `value`.
    public init(booleanLiteral value: Bool)
}
是“历史”C类型的快速映射 :

另请参见Xcode 7发行说明:

MacTypes.h中的类型Boolean在以下上下文中作为Bool导入: 允许在Swift和Objective-C类型之间建立桥接

在表示意义重大的情况下,将导入布尔值 作为一种独特的达尔文布尔类型,它是布尔可转换的 并且可以在各种条件下使用(非常类似于ObjCBool类型)。 (19013551)

例如,函数

void myFunc1(Boolean b);
void myFunc2(Boolean *b);
被导入Swift作为

public func myFunc1(b: Bool)
public func myFunc2(b: UnsafeMutablePointer<DarwinBoolean>)
func fileExistsAtPath(_ path: String,
      isDirectory isDirectory: UnsafeMutablePointer<ObjCBool>) -> Bool
输入到Swift作为

public func myFunc1(b: Bool)
public func myFunc2(b: UnsafeMutablePointer<DarwinBoolean>)
func fileExistsAtPath(_ path: String,
      isDirectory isDirectory: UnsafeMutablePointer<ObjCBool>) -> Bool
func fileExistsAtPath(upath:String,
isDirectory isDirectory:UnsafeMutablePointer)->Bool
此处,
BOOL
返回值自动转换为
BOOL
, 但是
(BOOL*)
保留为
非女性化指针
因为它是一个变量的地址