使用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