什么时候变量是 AnyObject 而不是 NSObject
When is a variable a AnyObject but not a NSObject
假设一个变量声明如下:
让样本:AnyObject = "anyobject" as 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.什么时候变量类型是Any but not NSObject?
据我了解,
NSObject 是 AnyObject 的子集。 NSObject 是大多数 ObjC 对象的基础 class。
AnyObject 是 Any 的子集。 AnyObject 是任何 class 类型的实例。
Any 表示任何类型的实例,包括函数类型和可选类型。
以上理解有误请指正
抱歉,我是 Objc 的新手,需要帮助来理解这些概念。任何解释这些概念的网站 url 都会很有用。提前致谢! :)
在具有 Objective-C 兼容性的平台上(这意味着所有 Apple 的平台而不是其他平台),每个 class 类型(秘密地)是 the SwiftObject
class 的子class , 它提供 NSObject
协议一致性。
在其他平台上,NSObject
只是“另一个 class”,implemented in Swift,因此只有 class 明确将 NSObject
作为超级class 有 NSObject
个实例。
假设一个变量声明如下:
让样本:AnyObject = "anyobject" as 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.什么时候变量类型是Any but not NSObject?
据我了解,
NSObject 是 AnyObject 的子集。 NSObject 是大多数 ObjC 对象的基础 class。
AnyObject 是 Any 的子集。 AnyObject 是任何 class 类型的实例。
Any 表示任何类型的实例,包括函数类型和可选类型。
以上理解有误请指正
抱歉,我是 Objc 的新手,需要帮助来理解这些概念。任何解释这些概念的网站 url 都会很有用。提前致谢! :)
在具有 Objective-C 兼容性的平台上(这意味着所有 Apple 的平台而不是其他平台),每个 class 类型(秘密地)是 the SwiftObject
class 的子class , 它提供 NSObject
协议一致性。
在其他平台上,NSObject
只是“另一个 class”,implemented in Swift,因此只有 class 明确将 NSObject
作为超级class 有 NSObject
个实例。