小编agi*_*ult的帖子

将Swift协议传递给Objective-C指针

使用XCode 10.1/Swift 4.2.

我正在尝试将符合Swift协议的对象分配给Objective-C指针.以下代码是一个最小的示例,编译和按预期工作,但它给了我以下警告:

如果分配给局部变量: Incompatible pointer types initializing 'NSObject<Animal> *__strong' with an expression of type 'id<Animal> _Nullable'

如果分配给存储的属性: Incompatible pointer types assigning to 'NSObject<Animal> *' from 'id<Animal> _Nullable'

关于如何解决这个警告而不仅仅是沉默它的任何想法?

SWIFT代码:

@objc protocol Animal {
    var name: String { get }
}

@objc class Pig: NSObject, Animal {
    var name: String = "pig"
}

@objc class Cow: NSObject, Animal {
    var name: String = "cow"
}

@objc class Farm: NSObject {
    static func getAnimal(name: String) -> Animal? {
        // return …
Run Code Online (Sandbox Code Playgroud)

objective-c compiler-warnings pointer-conversion swift swift-protocols

3
推荐指数
1
解决办法
146
查看次数