use*_*748 3 compiler-errors objective-c orsserialport swift
我正在尝试使用ORSSerialportObjective-C串行库启动串行连接.我已经成功使用它来查找所有串口但是在打开连接时遇到问题.
文档显示了端口的打开方式:
ORSSerialPort *serialPort = [ORSSerialPort serialPortWithPath:@"/dev/cu.KeySerial1"];
Run Code Online (Sandbox Code Playgroud)
我写了以下内容:
let serialPort: ORSSerialPort.serialPortWithPath(serialListPullDown.selectedItem)
Run Code Online (Sandbox Code Playgroud)
但是,Xcode不会自动完成我的方法,也不会编译.给我错误"serialPortWithPath不是ORSSerialport的成员类型".我已经正确设置了桥接头,我已经在同一个库中使用了另一个类,语法类似,没有任何问题.这里发生了什么?
简答:用.创建对象
let serialPort = ORSSerialPort(path:"/dev/cu.KeySerial1")
Run Code Online (Sandbox Code Playgroud)
详细信息: Objective-C工厂方法
+ (ORSSerialPort *)serialPortWithPath:(NSString *)devicePath;
Run Code Online (Sandbox Code Playgroud)
映射到Swift as
init!(path devicePath: String!) -> ORSSerialPort
Run Code Online (Sandbox Code Playgroud)
这在"与Objective-C API交互"中有记录(感谢Nate Cook!):
为了一致性和简单性,Objective-C工厂方法在Swift中被映射为便捷初始化器.此映射允许它们使用与初始化程序相同的简洁,清晰的语法.
这意味着工厂方法映射到与 Objective-C init方法相同的Swift方法
- (id)initWithPath:(NSString *)devicePath;
Run Code Online (Sandbox Code Playgroud)
两者都将从Swift调用
let serialPort = ORSSerialPort(path:"/dev/cu.KeySerial1")
Run Code Online (Sandbox Code Playgroud)
事实证明这会调用init方法.因此,无法从Swift调用工厂方法.
| 归档时间: |
|
| 查看次数: |
830 次 |
| 最近记录: |