Ios Swift类/结构隐式符合NSObjectProtocol?
不久前,我遇到了一个奇怪的问题。当我尝试在调试中将Swift对象强制转换为NSObjectProtocol时,它会成功执行。但当此代码在AppStore构建中执行时,它将强制转换为零Ios Swift类/结构隐式符合NSObjectProtocol?,ios,swift,casting,nsobjectprotocol,Ios,Swift,Casting,Nsobjectprotocol,不久前,我遇到了一个奇怪的问题。当我尝试在调试中将Swift对象强制转换为NSObjectProtocol时,它会成功执行。但当此代码在AppStore构建中执行时,它将强制转换为零 import Foundation final class MyClass { let testP: String = "123" } struct MyStruct { let testP: String = "123" } let myClass = MyClass() let myStr
import Foundation
final class MyClass {
let testP: String = "123"
}
struct MyStruct {
let testP: String = "123"
}
let myClass = MyClass()
let myStruct = MyStruct()
print(myClass) // >> __lldb_expr_1.MyClass
print(myClass as! NSObjectProtocol) // >> __lldb_expr_1.MyClass
print(myStruct as! NSObjectProtocol) // >> __lldb_expr_3.MyStruct(testP: "123")
当我将struct强制转换为NSObjectProtocol时,我收到这样的警告:
Cast from 'MyStruct' to unrelated type 'NSObjectProtocol' always fails
但是,如何才能看到它成功地打印出我的结构
所以,问题是:这是Swift的bug还是功能?)
请原谅我的法语
NSObjectProtocol
有一些方法用于AnyClass
,您需要遵守protocol的方法
你能在苹果官方网站上读到什么
符合此协议的对象可以被视为
第一类对象。可以询问此类对象的以下信息:
类及其类在继承层次结构中的位置
与协议的一致性
能够响应特定消息
在图像中查看使任何对象符合NSObjectProtocol
的方法。
这里还有一些对您有用的信息:显然,它既是bug又是特性 有一些未解决的问题我理解为什么我得到警告,问题是:为什么这个结构成功地强制转换?尽管有警告…顺便说一句,NSObjectProtocol没有标记为class或AnyObject,因此任何结构都可能符合它。好的,它只是契约,所以我可以创建结构,它将符合此协议,并按照我的意愿处理这些属性和方法。请告诉我您如何使用符合该协议的结构进行编码抱歉,但这不是我问题的答案)