我还在学习Swift和iOS开发,但我一直在讨论这个问题,尽管我试图深入挖掘杂草,但我仍然有点困惑。
当我开始输入true
时,Xcode 6会建议自动完成TRUE
。不是世界末日。但是,有一次我决定看看如果我使用TRUE
会发生什么,结果给了我一个错误:
'DYLD_BOOL' is not convertible to 'Bool'
好的,所以TRUE不是Bool ......我查看了定义了DYLD_BOOL的文件(顺便说一下它是一个结构),并找到了以下代码:
struct DYLD_BOOL {
init(_ value: UInt32)
var value: UInt32
}
var FALSE: DYLD_BOOL { get }
var TRUE: DYLD_BOOL { get }
现在我彻底迷茫了;我不明白这段代码在做什么。有人可以对这里发生的事情有所了解吗?什么是DYLD_BOOL以及何时使用它?
提前致谢。
答案 0 :(得分:7)
1)您没有做错任何问题,我在自动填充方面遇到了同样的问题:当您尝试键入' true'时,Xcode会尝试将其自动填充为' TRUE'而不是' true'。
我刚刚将此提交为错误,报告编号为' 18945902'
有时你需要输入' true'来解决这个问题。在其他地方,复制/粘贴文本。这是一个愚蠢的Xcode错误。
2)' DYLD'东西是一些' DYnamic LoaDer'图书馆,它定义了它自己的Bool'类型,值为' TRUE'并且'错误'。这通常是出于代码兼容性原因,来自其他平台或库的代码。
你真的可以忘记它,并使用' true'并且' false'对于布尔值,它应该在下一个XCode版本中修复,因为它是一个烦人的bug。
如果您真的想了解更多有关DYLD的信息,请参阅DYLD的文档: - )
https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/dyld.1.html
答案 1 :(得分:1)
我还发现在首都'TRUE'之后键入一个空格会将其变为正常的'true'。使用Xcode的任何人都非常讨厌,我希望Apple在下次更新中修复此问题。