美文网首页
2018面试题总结

2018面试题总结

作者: 雪丹妮_66865 | 来源:发表于2018-03-19 18:57 被阅读20次

    1. 介绍一下分类,能用分类做什么?内部是如何实现的?它为什么会覆盖掉原来的方法?

    category的主要作用是为已经存在的类添加方法。除此之外,apple还推荐了category的另外两个使用场景
    1> 可以把类的实现分开在几个不同的文件里面。这样做有几个显而易见的好处,
        a)可以减少单个文件的体积 
        b)可以把不同的功能组织到不同的category里 
        c)可以有多个开发者共同完成一个类 
        d)可以按需加载想要的category等等。
    

    2> 声明私有方法

    注意点:
    1> category的方法没有完全替换掉原来类已经有的方法,也就是说如果category和原来类都有methodA,那么category附加完成之后,类的方法列表里面会有两个methodA
    2> category的方法被放到了新方法列表的前面,而原来类的方法被放到了新方法列表的后面,运行时在查找方法的时候是顺着方法列表的顺序查找的,它只要一找到对应名字的方法,就会罢休,殊不知后面可能还有一样名字的方法。(即原有类的方法不会被执行)

    1.2 另外,如果两个不同的分类里面有相同的方法,会先找到最后一个编译的category里的对应方法。

    1.3 如果原有类以及其两个不同的分类都实现了+load方法,+load的执行顺序是先类,后category,而category的+load方法执行顺序是根据编译顺序决定的。

    1.4 怎么调用原来类中被category覆盖掉的方法?
    category并不是完全替换掉原来类的同名放法,只是category在方法列表的前面而已,所以我们只要顺着方法列表找到最后一个对应名字的方法,就可以调用原来类的方法。

    相关文章

      网友评论

          本文标题:2018面试题总结

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