分类和扩展有什么区别?
2020/6/25 23:26:06
本文主要是介绍分类和扩展有什么区别?,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
分类:
1、通过运行时机制在程序启动时将方法动态添加到方法列表中(编译时不添加,不写方法实现不会有警告) 2、只能添加方法,添加属性只能生成setter、getter,可通过关联对象实现添加属性
拓展:
1、编译时期直接合到原类中 2、可添加实例变量 3、声明的方法没被实现,编译器会报警,因为扩展是在编译阶段被添加到类中
struct category_t {
const char *name; classref_t cls; struct method_list_t *instanceMethods; // 对象方法 struct method_list_t *classMethods; // 类方法 struct protocol_list_t *protocols; // 协议 struct property_list_t *instanceProperties; // 属性 // Fields below this point are not always present on disk. struct property_list_t *_classProperties; method_list_t *methodsForMeta(bool isMeta) { if (isMeta) return classMethods; else return instanceMethods; } property_list_t *propertiesForMeta(bool isMeta, struct header_info *hi); }; 复制代码
1)类的名字(name)
2)类(cls)
3)category中所有给类添加的实例方法的列表(instanceMethods)
4)category中所有添加的类方法的列表(classMethods)
5)category实现的所有协议的列表(protocols)
6)category中添加的所有属性(instanceProperties)
这篇关于分类和扩展有什么区别?的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-10-05Swift语法学习--基于协议进行网络请求
- 2022-08-17Apple开发_Swift语言地标注释
- 2022-07-24Swift 初见
- 2022-05-22SwiftUI App 支持多语种 All In One
- 2022-05-10SwiftUI 组件参数简写 All In One
- 2022-04-14SwiftUI 学习笔记
- 2022-02-23Swift 文件夹和文件操作
- 2022-02-17Swift中使用KVO
- 2022-02-08Swift 汇编 String array
- 2022-01-30SwiftUI3.0页面反向传值