Objective-C的入门学习笔记

2020-01-15 15:14:56于丽

是的,为一个类做扩展,我们最常想到的方法就是为其创建一个子类,然后添加你需要扩展的新方法等。

但是在OC中有时这样并不方便,书上举例了一个NSString的例子。原话是这样的:

/**********

当希望为新有类添加新的行为时,我们通常会创建子类。

但是有时子类并不方便。例如,你可能会希望为NSString类新增一些新行为,但是你知道,NSString实际上只是一个类簇的前台表示,因而无法

为这样的类创建子类。省略1000字。

********/

好了,从上面我们基本知道,创建子类这个方法是有局限性的对吧。上面引入一个概念叫类簇。

字面意思(一簇鲜花,就是许多朵花扎成一束呈现出来,里面的具体其实我们是不知道的。)

类簇其实也算是个不大不小的概念。集体可以看官方文档 http://www.easck.com/developer/mac/library/documentation/Cocoa/Conceptual/CocoaFundamentals/CocoaObjects/chapter_3_section_9.html

鄙人也是新接触这玩意儿,里面有这么一句话:

/*****

类簇将一些私有的、具体的子类组合在一个公共的、抽象的超类下面。

****/

我不知道是不是可以理解。类簇包含的成分是带有私有性质的,但我们都知道,继承后的子类是不能访问父类的私有成员的(这个应该没错吧?)

那么我们在新创建的子类添加的新方法就无权限访问那些东西咯。

好吧,以上是个人理解,这东西也是听拗口的,具体详情可以参考更多官方文档。

那么,好了,我们大体上知道OC引入类别这个机制的原因了。配合上OC动态运行时的分配机制,你可以为现有类添加新的方法,嘿,这

听起来很酷!(书上原话)

类别创建:

复制代码
@interface  NSString(NumberConvenience)
-(NSNumber *)lengthAsNumber;
@end//NumberConvenience
声明有两个特点: