Objective-C到Swift,指针转换

时间:2014-08-21 11:56:51

标签: objective-c pointers swift

我正在尝试将Objective-C库ORSSerialPort实现到我的Swift项目中。

随库提供的示例为ORSSerialPortManager类提供了以下设置:

ORSSerialPortManager *portManager = [ORSSerialPortManager sharedSerialPortManager];

如果这样的东西不能在Swift中占据它的位置吗?

ORSSerialPortManager = ORSSerialPortManager.sharedSerialPortManager()

也许指针就像这样?

ORSSerialPortManager = withUnsafePointer(&ORSSerialPortManager, ORSSerialPortManager.sharedSerialPortManager())

我收到错误:“无法分配此表达式的结果”,并且“顶级不允许表达式”。有什么需要改变?

1 个答案:

答案 0 :(得分:1)

你的表达:

ORSSerialPortManager = ORSSerialPortManager.sharedSerialPortManager()

正在尝试分配类型名称(ORSSerialPortManager)。这就是"无法分配给这个表达式的结果"错误;表达式ORSSerialPortManager不可分配。相反,您想要分配一个新的变量名称:

let aPortManager = ORSSerialPortManager.sharedSerialPortManager()

或者,如果你想要一个非常量引用:

var aPortManager = ORSSerialPortManager.sharedSerialPortManager()

你也可以在变量上加上类型注释,但这里不需要它(它可以从方法签名中推导出来):

var aPortManager : ORSSerialPortManager = ORSSerialPortManager.sharedSerialPortManager()

请注意名称类型的顺序更改:name : Type而不是Type name