【问题标题】:Objective-C to Swift, pointer conversionObjective-C 到 Swift,指针转换
【发布时间】:2014-08-21 11:56:51
【问题描述】:

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

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

ORSSerialPortManager *portManager = [ORSSerialPortManager sharedSerialPortManager];

这样的东西应该不能在 Swift 中占据一席之地吗?

ORSSerialPortManager = ORSSerialPortManager.sharedSerialPortManager()

也许指针是这样的?

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

我收到错误消息:“无法分配给此表达式的结果”和“表达式不允许在顶层”。有什么需要改变的?

【问题讨论】:

  • 第一个语法是正确的。您是否已将 Objective-C 类的 .h 文件添加到桥接头中?

标签: objective-c pointers swift


【解决方案1】:

你的表情:

ORSSerialPortManager = ORSSerialPortManager.sharedSerialPortManager()

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

let aPortManager = ORSSerialPortManager.sharedSerialPortManager()

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

var aPortManager = ORSSerialPortManager.sharedSerialPortManager()

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

var aPortManager : ORSSerialPortManager = ORSSerialPortManager.sharedSerialPortManager()

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多