• IT培训活动
  • IT培训就业
  • IT培训专区
  • IT培训就业
  • IT培训机构
  • IT培训学校
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

您当前位置:首页 > 睿峰资讯 > 软件测试 > 干货|你不知道的“类簇”

干货|你不知道的“类簇”

时间:2016-10-28 11:26:11   来源:未知  作者:睿峰


关于类簇这一概念,很多人都可能了解一点,但是却不清楚类簇到底是什么。那么现在就由我来给大家讲解关于类簇的一点知识。



类簇其实是一种设计模式,并且在Foundation框架中广泛的进行使用。类簇将一些私有的、具体的子类组合在一个公共的、抽象的超类下面,以这种方法来组织类可以简化一个面向对象框架的公开框架,而又不减少功能的丰富性。


简单来说我们同样可以看看NSNumber,如果让我们来编写这个类,我们肯定封装char类型一个类、int也需要一个类、那么long、long int、unsigned int、double、float等我们都需要创建一个对应的类,但是如果我们采取类簇这种设计模式,则只需要把相应的初始化方法放到我们的NSNumber这个类当中,就可以使用创建封装任意基本数据类型了,而不用去重新导入其他类的头文件。


其实类簇的本质就是抽象工厂这样的设计模式,那么我们可以来看看NSString下面的崩溃原因: -[__NSCFString appendFormat:] + 139. 可能很多朋友都看到了这些系统给我们的提示,那么这些子类就是在系统的内部进行封装的,直接在NSString中提供了相应的接口方法,让外界能够通过NSString去调用这些公开的方法从而来创建一个NSString下面的子类。


那么说到这里就不可不说说isMemberOfClass、isKindOfClass这两个方法了,那么其中isMemberOfClass是判断该对象是否是当前类的一个实例,记住是指当前类,而isKindOfClass是判断该对象是否当前类或者当前类子类的一个实例。


我们看到上面这副图,在Xcode上运行之后,只会打印出number1 yes,那就说明当前string不是NSString类的一个实例,而是NSString类子类的一个实例,这也就验证了我们上面说到的,平时我们所创建的NSString类型的变量不是NSString类型,而是其子类类型。


当然除了NSString、NSNumber还有NSData、NSArray、NSDictionary同样也是用的类簇这种设计模式,当前同样实用与其中对应可变的类。


所以当我们如果有大量的子类需要编写,那么这个时候就可以采取类簇这种设计模式,可以简化你的公开框架,大家不妨去试试吧!



睿峰优秀学员iOS开发交流群: 493647356
上一篇:你是小白,你不懂,我不怪你!  
下一篇:学员供稿| 来源生活的数理化设计
地址:环球中心S2-6栋-16楼-12号、13号、14号。(洲际酒店大堂右边电梯上16楼)

课程免费咨询热线:15828071040