- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 CoreBluetooth 框架制作一个应用程序,我最近将它移植到 swift 2.0。在我的代码中,我有一个全局变量,它是一个 CBCharacteristic,在 swift 1.2 中我可以这样做:
var bob:CBCharacteristic = CBCharacteristic()
但现在它给我的错误是 CBCharacteristic 的 init() 函数已被显式隐藏,因此我无法对其进行初始化。有什么办法可以解决这个问题吗?
最佳答案
CBCharacteristic
的实例只能通过服务发现过程检索。
在您的 Swift 1.2 代码中,您分配了一个“空”CBCharacteristic
只是为了让编译器满足关于未初始化变量的要求,但是如果您尝试使用 就会遇到运行时问题bob
在分配“真实的”CBCharacteristic
之前。
Swift 旨在更轻松地生成“安全”代码,这些代码不会因不正确使用类型而出现细微的运行时问题。直接实例化 CBCharacteristic
的实例是没有意义的,在 Swift 2.0 中,您被主动阻止这样做。
如果您的 CBCharacteristic
是一个属性,那么它应该被声明为可选的,因为在发现特征之前它可能没有值
var bob:CBCharacteristic?
或者,如果您确定您的代码在设置之前不会尝试访问 bob
-
var bob:CBCharacteristic!
第一个将确保您在使用它之前编写代码来解包可选,第二个将在设置之前使用它时给出运行时错误 - 这两者都比潜在难以调试的问题更可取你本来可以简单地引用一个“空”CBCharacteristic
关于ios - swift 2.0 : Initialize a CBCharacteristic?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31949303/
我是一名优秀的程序员,十分优秀!