swift 关键字2023-11-01
2023-10-31 本文已影响0人
iOS打怪升级
@objc
@objc是一个特性(attribute),用于在Swift中将某个实体(类、方法、属性等)暴露给Objective-C代码使用。
在Swift中,大部分的实体默认是不可见给Objective-C的。但是,如果你需要在Swift代码中使用Objective-C的特性或者与Objective-C代码进行交互,你可以使用@objc特性来将这些实体暴露给Objective-C。
具体来说,使用@objc特性修饰的实体可以被Objective-C代码访问和调用。这包括将Swift类声明为Objective-C类、将Swift方法声明为Objective-C方法、将Swift属性声明为Objective-C属性等。
需要注意的是,使用@objc特性修饰的实体必须符合Objective-C的要求,例如继承自NSObject、使用动态派发等。此外,@objc特性只能应用于类、协议、枚举、属性、方法、初始化器等,不能应用于全局函数或顶层声明。
总之,@objc特性在Swift中起到了桥接Objective-C和Swift代码的作用,使得两种语言可以相互调用和交互。
extension
在Swift中,extension(扩展)是一种机制,用于向已有的类、结构体、枚举或协议添加新的功能。通过扩展,我们可以在不修改原始实体的情况下,为其添加新的属性、方法、初始化器等。