Swift 创建不安全的泛型指针时出现语法错误(无法推断泛型参数';指针对象')
我正在围绕Swift 创建不安全的泛型指针时出现语法错误(无法推断泛型参数';指针对象'),swift,generics,Swift,Generics,我正在围绕GObject构建包装器,并尝试为其创建通用指针 class Object<T> { internal(set) var object = UnsafeMutablePointer(nil) } 类对象{ 内部(集合)变量对象=未配置指针(nil) } 但我得到了这个错误 我认为应该解决这个类型,但是编译器会抱怨。我是否正确创建了此指针?这只是编译器错误,还是我做错了 编辑 我尝试了我脑海中出现的每一种语法,如下所示: class Object<T&g
GObject
构建包装器,并尝试为其创建通用指针
class Object<T> {
internal(set) var object = UnsafeMutablePointer(nil)
}
类对象{
内部(集合)变量对象=未配置指针(nil)
}
但我得到了这个错误
我认为应该解决这个类型,但是编译器会抱怨。我是否正确创建了此指针?这只是编译器错误,还是我做错了
编辑 我尝试了我脑海中出现的每一种语法,如下所示:
class Object<T> {
internal(set) var object: UnsafeMutablePointer<T>?
init() {
object = UnsafeMutablePointer<T>(nil)
}
}
类对象{
内部(设置)变量对象:UnsafeMutablePointer?
init(){
对象=非女性化指针(nil)
}
}
似乎什么都不起作用,因为编译器无法解析类型
第二种方法中的类型声明是正确的。错误消息“使用不明确”是因为
UnsafeMutablePointer
有两个初始值设定项候选项接受nil
:一个接受OpaquePointer?
,另一个接受UnsafeMutablePointer?
在您的情况下,只需分配nil
:
init() {
object = nil
}
您也可以在属性定义中正确执行此操作,无需在
init
中执行此操作。通过在构造函数中传递nil
,结构无法推断类型。只需键入unsafemeutablepointer(nil)
。这应该行得通,在我问这个问题之前,我也试过了。它也不起作用。在Swift 3中,只有可选指针可以是nil
,例如var object:unsafemeutablepointer?=nil
–但了解指针在代码中的使用方式会很有趣。有些相关:。虽然在您的情况下,您可以将其保留为internal(set)var object:UnsafeMutablePointer?
–默认情况下,它将被初始化为nil
@martin-r,在这里您可以找到源代码,这样您就可以看到它的用法,没有什么特别之处,我只是在尝试桥接。