最近由于找工作的事情看了些面试题,基本面试题中都会提到类别和扩展之间的区别和联系。看了些书籍和博客基本都是写了些区别,而我又是个没有代码不能完全理解的人,就自己写了个小demo记录一下。
关于类别:类别很好理解,就是在不知道原有类的代码的情况下为类添加新的方法。值得注意的是只能添加新的方法。另外一点是如果你重写了原类的方法,调用时会优先调用类别的方法。
关于扩展:很多文章都只是说扩展是类别的特例,这种说法是没有错的。只是本人有点愚笨,在没有实例的情况下有的时候实在无法理解。其实可以这么想,我们为某个类添加私有的属性和方法时一般写在该类.m文件的
中。而扩展则是将该部分单独的抽出来成为一个.h文件,其实质还是给类添加私有属性和方法
以下是自己写了个小Demo,希望能够对理解扩展有所帮助。