NSStringFromClass 是一个 Foundation 框架提供的 Objective-C runtime 函数,它的作用是:
将类(AnyClass)转换为类名字符串,返回的是 Objective-C runtime 下的全类名。
函数定义
func NSStringFromClass(_ aClass: AnyClass) -> String
输入:一个类(Class 对象,例如 NSView.self 或 type(of: someObject))。
输出:一个 String,是这个类的完整 Objective-C 名称。
使用示例
import Foundation
import AppKit
let view = NSButton()
let className = NSStringFromClass(type(of: view))
print(className) // 输出:"NSButton"
使用场景
1、获取类名调试:NSStringFromClass(type(of: object))。
2、判断某个窗口、视图是不是某类:NSStringFromClass(type(of: view)) == “NSButton”。
3、日志输出:动态查看当前类,print(“当前视图类:\(NSStringFromClass(type(of: self)))”)。
4、Swift 中判断某个 NSWindow 是否是 NSPanel:NSStringFromClass(type(of: window)) == “NSPanel”。
总结
NSStringFromClass 把一个类转成字符串,方便调试、类型判断、runtime 动态逻辑,是 Swift/Objective-C 混合项目中常见的桥接函数。
在Swift中,常使用 type(of:) 返回类型,而不是字符串。但是NSStringFromClass可以返回类型的字符串:
let object: Any = NSView()
print(NSStringFromClass(type(of: object as AnyObject))) // 输出:"NSView"
此外,NSClassFromString是相反的操作,将字符串类名转换为类。