很基础的东西才是最常用的,一不小心就会忘记了他的存在,然而实际开发当中这都是很常用的存在。 重点:类目的使用 这里做简单的介绍,想知道更多就百度吧。概念给你,详细的深入研究还是要靠自己的。 1.类目 类目就是为已存在的类添加新的方法。但是不能添加实例变量。比如系统的类,我们看不到他的.m文件,所以没有办法用直接添加方法的方式去实现。
Category的使用场景有那些呢: 1、类包含了很多个方法实现,而这些方法需要不同团队的成员来实现 2、当你在使用基础类库中的类时,你不想继承这些类而只想添加一些方法时。 这是Objective-C语言的一个特性,可以在不改变类名和原来类的实现的前提下,实现对类的方法扩展。 以下两种方式最后使用类别。
1)针对系统提供的一些类,例如:NSString,NSArray,NSNumber等类,系统本身不提倡使用继承去扩展方法,因为这些类内部实现对继承有所限制,所以最后使用类别来进行方法扩展。 2)类别支持开发人员针对自己构建的类,把相关的方法分组到多个单独的文件中,对于大型而复杂的类,这有助于提高可维护性,并简化单个源文件的管理。 Category能实现上面的需求,当然也有使用Category是需要注意的问题: 1、Category可以访问原始类的实例变量,但不能添加实例变量,如果想添加变量,那就通过继承创建子类来实现。 2、Category可以重载原始类的方法,不大不推荐这么做,这样会覆盖掉原始类的方法。如果确实要重载,那就通过继承创建子类来实现。 3、和普通接口有所区别的是,在Category的实现文件中的实例方法只要你不去调用它你可以不用实现所有声明的所有方法。
2.延展 延展的作用就是定义自己的私有方法。 形式和类目相同,不用新创建文件,只是把类目的interface地方的文件放在了你需要扩展的类的.m文件里边。 但是在外界不能调用延展方法,只能在.m文件里边通过self来调用私有方法。隐藏了内部的实现。通过这种方式回调到延展的方法。
3.协议 (1).协议声明了可以被其他的类实现的方法。协议本身必不会去实现。 (2).协议不是类,只是一个其他对象可以实现的接口。 代理(委托)模式:自己有需求,但是让别人去做。 4.协议也可以写在一个类里边,用到的时候引入类的头文件就可以。
5:继承 1.继承Inherit 这个是面向对象语言都有的一个特性,子类会继承父类的方法和属性。 对于以下情况,无法使用类别,必须使用继承。 1)新扩展的方法与原方法同名,但是还需要使用父类的实现。因为使用类别,会覆盖原类的实现,无法访问到原来的方法。 2)扩展类的属性,这个类别无法做到。 |
转载于:https://my.oschina.net/rdqblogs/blog/698179