go x/mobile:对Objective-C泛型的最小支持

j13ufse2  于 19天前  发布在  Go
关注(0)|答案(1)|浏览(14)

请在提交问题之前回答以下问题。谢谢!

您正在使用的Go版本是什么(go version)?

go version go1.9.2 darwin/amd64

这个问题是否在最新版本中重现?

是的

您正在使用什么操作系统和处理器架构(go env)?

GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/tadovas/work/go/openvpnv3-go-bindings"
GORACE=""
GOROOT="/usr/local/Cellar/go/1.9.2/libexec"
GOTOOLDIR="/usr/local/Cellar/go/1.9.2/libexec/pkg/tool/darwin_amd64"
GCCGO="gccgo"
CC="clang"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/_j/73ymsvw56v989xyfwn6q18_m0000gn/T/go-build533420179=/tmp/go-build -gno-record-gcc-switches -fno-common"
CXX="clang++"
CGO_ENABLED="1"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"

您做了什么?

将ObjC方法与接受或返回通用类型(如NSArray<NEPacket *>)的对象绑定。如果可能,请提供一个重现错误的配方。完整的可运行程序很好。在play.golang.org上链接最好。

您期望看到什么?

成功绑定

您看到了什么?

未找到的方法,这是意料之中的。这个问题更像是一个功能请求/讨论。是否有计划至少提供对Obj C的最小支持的泛型?有一些非常好的iOS API期望接收具体对象的NSArray,这很遗憾,我们无法绑定它们吗?我想尝试自己创建一个POC,也许有人已经进行了一些调查,有了一些想法等等?由于Go语言中没有泛型概念,因此我认为最大的问题是如何区分例如NSArray<NEPacket *>和NSArray<NSDate *>。当前的导入看起来像这样:"Objc/Foundation/NSArray",生成带有未加类型的方法(如Count)的golang接口NSArray,这是可以的。所以也许我们可以这样做:"ObjC/Foundation/NEPacket_NSArray",生成具有接受或返回NEPacket类型参数的不同接口?我知道它看起来很丑陋,但我还没有找到其他任何其他选项来编码数组的类型名称到接口中作为接口名称的一部分。任何帮助、想法、建议将不胜感激。

zpjtge22

zpjtge221#

我猜我们现在可以暂时把那些协变/逆变的东西放在一边。简单明了的NSArray或其他例子将是一个巨大的开始。

相关问题