isSuperclassOf、is 与 == 的区别
在 Swift 中,isSuperclass(of:)、is 和 == 是用于类型检查和比较的关键字和操作符,但它们的功能和适用场景有显著差异。以下是详细解析:
isSuperclass(of:)
isSuperclass(of:) 是 NSObject 类提供的方法,用于检查一个类是否是另一个类的超类。它仅适用于继承自 NSObject 的类,且用于类层次结构的判断。
代码示例
import Foundation
class Animal: NSObject {}
class Dog: Animal {}
let animalClass: AnyClass = Animal.self
let dogClass: AnyClass = Dog.self
print(animalClass.isSuperclass(of: dogClass)) // true
print(dogClass.isSuperclass(of: animalClass)) // false
核心特点
- 仅适用于
NSObject的子类。 - 用于运行时检查类之间的继承关系。
- 返回布尔值,表示调用者是否为参数类的超类。
is 操作符
is 是 Swift 的原生操作符,用于检查实例是否属于特定类型或其子类型。它支持类、结构体和枚举,且适用于类型检查和模式匹配。
代码示例
class Vehicle {}
class Car: Vehicle {}
let myCar = Car()
print(myCar is Car) // true
print(myCar is Vehicle) // true
let unknown: Any = "Hello"
print(unknown is String) // true
核心特点
- 支持 Swift 所有类型(包括值类型)。
- 检查实例是否匹配类型或其派生类型。
- 常用于
if或guard语句中实现条件分支。
== 操作符
== 是相等性

被折叠的 条评论
为什么被折叠?



