1:类别/类目/Category 很方便给现有类添加方法。但是不能添加成员变量,匿名类别除外,比如可以给 NSString 增加方法,给 UINavigationBar 增加方法,比如 SDWebImage 给和 UIImageView 增加了 setImageWithURL:方法。类别对于使用者很方便。
继承可以给现有类增加方法和成员变量。继承对于使用者来说不如类别方便,比如对 SDWebImage 如果用继承的话,那么就需要写一个类似于 QFImageView 然后把所有的UIImageView 改成 QFImageView,这里不如类别方便。
2:我们一般是对UIScrollView 做复用机制的,因为 UIScrollView 滚动窗口没有复用,所以要做,原理就是超过屏幕的 View 不能销毁,而是要放在复用队列/池里面存放起来,然后以后要在 scrollView 显示 view 首先不要alloc 创建,而是要先去复用池里面找有没有可复用的 view,如果没有就 alloc 创建,如果有就直接用。