记 IOS Swift 实现 gomobile interface 抛出异常 go_seq_go_to_refnum on objective-c objects is not permitted
其实这应该是属于自己操作问题,今天在用 gomobile 需要传一个实现接口的回调时,居然直接就崩了。
然后抛出了如下异常
go_seq_go_to_refnum on objective-c objects is not permitted
通过 Github 找了一些资料后发现原来是 gomobile 会将 Golang 的 interface 生成为 @protocol IOSHelper 和 @interface IOSHelper 两个声明,我报错时写的实现类如下
class IOSHelperObj : IOSHelper {
}
这样写的话,Golang 那边一调用就崩了。在 Swift 里正确的写法应该是
class IOSHelperObj : NSObject, IOSHelperProtocol {
}
这才是实现一个接口的正确操作。今天又是踩坑的一天 ??️
参考链接:
https://github.com/golang/go/issues/20254