sma*_*nja 2 objective-c ios swift
我有一个快速编写的库类,应该在现有的Objective-C代码中使用。我创建了桥接头,并在.h中定义了@class MySwiftClass,并在.m中导入了“ -Swift.h”
迅速的班级与此类似
@objc class MySwiftClass: NSObject {
var firstName : String
var lastName: String
public init(firstName: String, lastName: String) throws {
guard !firstName.isEmpty && !lastName.isEmpty else { throw SOME_ERROR }
self.firstName = firstName
self.lastName = lastName
super.init()
}
func methodWithParams(city: String, suburb: String) throws -> String {
return city + suburb
}
Run Code Online (Sandbox Code Playgroud)
我遇到了两个问题。
不知道如何init在Objective-C类上调用swift 函数。我试过了MySwiftClass *myClass = [MySwiftClass init];。到目前为止,该应用可以编译。但是不知道如何传递参数。
我也想myClass.methodWithParams(city:"My city", suburb:"My country")在Objective-C类中访问。
感谢帮助!
小智 5
您必须在初始化调用之前调用alloc。
MySwiftClass* instance = [[MySwiftClass alloc] initWithFirstName: @"John" lastName: @"Doe"];
Run Code Online (Sandbox Code Playgroud)将方法标记为@objc或用于@objcMembers使方法可从Objective-C代码公开。不幸的是,您不能在Objective-C中使用可抛出的初始值设定项。
@objcMembers class MySwiftClass: NSObject {
var firstName : String
var lastName: String
public init(firstName: String, lastName: String) throws {
guard !firstName.isEmpty && !lastName.isEmpty else { throw SOME_ERROR }
self.firstName = firstName
self.lastName = lastName
super.init()
}
func methodWithParams(city: String, suburb: String) throws -> String {
return city + suburb
}
}
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
503 次 |
| 最近记录: |