Category's Property(类别的其他特性)
视频锁定
{$ currentTime | date:'mm:ss' $}
{$ timeLeft | date:'mm:ss' $}
Category Overrides(类别重写)
你可以用类别中新定义的方法重写现有类中的相同方法,当然苹果并不推荐这么去做。因为类别的优先级高于类的方法,你可以重现写有方法。如果你真的重写了类方法,你会直接覆盖掉现有的方法,当然你可以在类别方法中首先通过如下语句[super someMethod]调用父类的方法,然后再做你想做的事,不过一切小心为好。
Categories as an Implementation Tool(将类别作为一种实现工具)
类别不仅能扩展现有类的方法。类别另一个用途是将类的一个实现文件@implementatin(.m)分成多个(.m)文件,每个文件中有一个类的类别。之所以需要这么做,是因为要满足一种编程的策略,这个策略为了:
- 将方法分组管理
- 增加一个复杂类的可读性
- 当多个程序员共同开发一个类时,可以分工开发类的不同方法组
Categories and informal protocols(类别和非正式协议)
上一节我们提到了informal protocols(非正式协议),实际上,一个非正式协议是用类别来实现的。通常情况下,非正式协议是声明一个NSObject类的类别,因为Objective-C中的所有类都继承自NSObject,所以在NSObject的类别中定义的方法,每个子类都可以有选择实现类别中的某些方法,而不用去实现自己不需要的方法。这个用法更多地是用在一种称为代理(delegate)的对象上,关于代理技术,我们在后面章节会讲解。
在线练习
{$ activeFileHint $}