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

分类和扩展的区别

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

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

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

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

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

    相关文章

      网友评论

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

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