当变量是AnyObject而不是NSObject

问题描述 投票:1回答:1

想象一个声明如下的变量:

让示例:AnyObject =“ anyobject”作为AnyObject

现在,当我尝试检索var样本的类型时,它显示为NSObject。

下面是代码段:

   let sample : AnyObject = "anyobject" as AnyObject

        if sample is NSObject {
            print("Type is NSObject")
        }

        if sample is AnyObject {
            print("Type is AnyObject")
        }

        if sample is Any {
            print("Type is Any")
        }

输出为:

Type is NSObject
Type is AnyObject
Type is Any

我认为输出将是AnyObject和Any,因为AnyObject是Any的子集。但是它也显示了NSObject。

我的问题是:1.什么时候变量是AnyObject但是NSObject?2.什么时候是变量类型,但not NSObject除外?根据我的理解,

NSObject是AnyObject的子集。 NSObject是大多数ObjC对象的基类。AnyObject是Any的子集。 AnyObject是任何类类型的实例。Any表示任何类型的实例,包括函数类型和可选类型。

如果我对以上理解有误,请纠正我。抱歉,我是Objc的新手,需要帮助您理解这些概念。任何解释这些概念的网站网址都将很有用。提前致谢! :)

想象一个声明如下的变量:let sample:AnyObject =“ anyobject”作为AnyObject现在,当我尝试检索var示例的类型时,它显示为NSObject。以下是代码段:...

swift types nsobject any anyobject
1个回答
0
投票
在具有Objective-C兼容性的平台上(这意味着Apple的所有平台,没有其他平台),每个类类型都是(秘密地)the SwiftObject class的子类,该子类提供SwiftObject协议一致性。
© www.soinside.com 2019 - 2024. All rights reserved.