不久前,我遇到了奇怪的 Swift 问题。当我尝试在调试中将 Swift 对象转换为 NSObjectProtocol 时 - 它成功执行。但是当这段代码在 AppStore 构建中执行时,它会强制转换为 nil。
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 还是特性?)
PS:请原谅我的法语