Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift类/结构隐式符合NSObjectProtocol?_Ios_Swift_Casting_Nsobjectprotocol - Fatal编程技术网

Ios Swift类/结构隐式符合NSObjectProtocol?

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

不久前,我遇到了一个奇怪的问题。当我尝试在调试中将Swift对象强制转换为NSObjectProtocol时,它会成功执行。但当此代码在AppStore构建中执行时,它将强制转换为零

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,因此任何结构都可能符合它。好的,它只是契约,所以我可以创建结构,它将符合此协议,并按照我的意愿处理这些属性和方法。请告诉我您如何使用符合该协议的结构进行编码抱歉,但这不是我问题的答案)