ios os工程调用swift方法

按照网上的教程

1、新建一个oc工程

2、找到工程的embed asset Packs in Product Bundle,设置为Yes

3、新建一个swift文件,类似

1
2
3
4
5
6
7
import Foundation

public class TestSwift : NSObject {
func printLog() {
print("hello")
}
}

4、在调用处引用头文件

1
#import "TestSwiftWifthOc-Swift.h" //TestSwiftWifthOc为当前工程名字

然后就可以调用了

1
2
TestSwift *testSwift = [[TestSwift alloc]init];
[testSwift printLog];

5、但是有些xcode创建的工程会报错,比如我的macbook

6、进去TestSwiftWifthOc-Swift.h头文件里面看,系统帮我们创建了TestSwift类,但是没有方法,很奇怪

1
2
3
4
SWIFT_CLASS("_TtC16TestSwiftWifthOc9TestSwift")
@interface TestSwift : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

7、最后找到了解决方法,在swift方法上加注解@objc,问题解决
、、、
import Foundation

public class TestSwift : NSObject {
@objc func printLog() {
print(“hello”)
}
}
、、、