美文网首页
分类和扩展的区别

分类和扩展的区别

作者: 花无缺_203a | 来源:发表于2018-11-12 16:18 被阅读0次

1.分类:在不修改一个类的情况下给类增加方法,即在不知道.m的情况下给只能增加方法,但不能增加成员变量,可以添加属性,但是只会生成set和get方法的声明,不会生成成员变量,要想保存变量可以通过动态绑定的方式,同一个方法,在分类中的方法执行优先级高,同一个方法只执行一次

分类原理:原理是讲分类中的中方法、属性、协议放在category结构体里面,然后在运行时拷到对象的结构体重,但是对象的成员变量是在编译时已经分配好内存,分类在运行时加入变量会破坏对象的内存布局,因此不能在运行时添加变量,对象关联的KV对保存在一个全局的哈希表里面,当对象销毁时会释放所有关联的KV对

2.扩展:扩展有点像匿名的分类,但是它和分类是两个完全不同的东西,因为在.m中给类扩展私有的成员变量或者属性,可以扩展变量和方法,因此必须知道类的.m文件才能给类添加扩展。

扩展原理:扩展是在编译期内存就决定好了,是类的一部分

相关文章

  • iOS基础题

    一、category 和 extension 的区别?(分类和扩展的区别) 1,分类有名字,类扩展没有名字,是一种...

  • iOS知识基础篇

    category 和 extension 的区别 分类有名字,类扩展没有分类名字,是一种特殊的分类 分类只能扩展方...

  • IOS知识基础篇

    category 和 extension 的区别 分类有名字,类扩展没有分类名字,是一种特殊的分类 分类只能扩展方...

  • 1. iOS面试题基础篇

    category 和 extension 的区别 分类有名字,类扩展没有分类名字,是一种特殊的分类 分类只能扩展方...

  • iOS面试题-基础篇

    category 和 extension 的区别 分类有名字,类扩展没有分类名字,是一种特殊的分类 分类只能扩展方...

  • iOS面试题--基础篇

    category 和 extension 的区别 分类有名字,类扩展没有分类名字,是一种特殊的分类 分类只能扩展方...

  • 一些关键字的使用__weak,__block

    1、category 和 extension 的区别分类有名字,类扩展没有分类名字,是一种特殊的分类分类只能扩展方...

  • 分类和扩展的区别

    分类 category 给一个系统公用的类添加额外的方法时,使用category,生成NSObject+addit...

  • 分类和扩展的区别

    分类只能扩展方法,不能扩展属性和实例变量,如果包含成员变量会直接报错! 如果分类中声明了一个属性,那么分类中只会生...

  • 分类和扩展的区别

    1.分类:在不修改一个类的情况下给类增加方法,即在不知道.m的情况下给只能增加方法,但不能增加成员变量,可以添加属...

网友评论

      本文标题:分类和扩展的区别

      本文链接:https://www.haomeiwen.com/subject/sfscfqtx.html