美文网首页
ObjectObject-C类目与延展、单例

ObjectObject-C类目与延展、单例

作者: 空白Null | 来源:发表于2016-07-07 13:54 被阅读58次

一、类目(category)的基本概念和用法

1、封装是面向对象的一个特征,OC也不意外,但有时候我们会碰到这样一种情况,比如我封装了一个类,不想再动它了,可是随着程序功能的增加,需要在哪个类中增加一个小小的方法,这是我们就不必再那个类中做修改或者在定义一个子类,只需要在用到那个方法时随手添加一个该类的类目即可

1) 在类目定义的方法,会成为原始类的一部分,与其他方法的调用没有区别

2) 通过给父类定义类目方法,其子类也会继承这些方法,如果子类添加类目方法,父类则不会拥有子类的类目方法

2、类目的应用和局限

1)应用

对现有类进行扩展:

比如,可以扩展Cocoa Touch框架中的类,你在类目中增加的方法会被子类所继承,而且在运行时跟其他的方法没有区别

作为子类的替代手段:

不需要定义和使用一个子类,可以通过类目直接向已有的类增加方法

对类中的方法归类:

利用category把庞大的类划分为小块分别进行开发,从而更好的对类中的方法进行更新和维护

2)局限性

无法向类目中,添加新的实例变量,类目中没有位置来容纳实例变量,如果想增加类的实例变量,只能通过定义子类的方式

在类目中一般不要覆盖现有类的方法

二、延展基本概念和用法

类的延展就如同是"匿名"的类目,延展中声明的方法在类本身的@implementation和它对应的@end之间实现,类有时需要方法方法只有自己所见,我们可以通过延展的方式定义类的私有方法

//延展

@interface Person ()

- (void)privateMethod;

@end

三、示例

创建一个MachinePerson类,让这个机器人能够说话,在不改变原类的基础上让这个机器人会跳舞

给NSArray添加一个类目,让NSArray能够将int型各位上的数放到一个数组中

单例

一、基本概念

单例设计模式运用较为普遍、广泛且较为简单的设计模式之一,他的设计原理是始终返回一个实例,即一个类始终只有一个实例

单例可以作为全局文件存在 保存一些全局数据

二、创建单例的基本步骤

1、保留一个单例对象的静态实例,并初始化为nil

2、提供一个类方法让外界访问唯一的实例

3、重写allocWithZone方法,在这里创建唯一的实例,注意线程安全

3、遵守NSCopying协议,实现copyWithZone方法

相关文章

  • ObjectObject-C类目与延展、单例

    一、类目(category)的基本概念和用法 1、封装是面向对象的一个特征,OC也不意外,但有时候我们会碰到这样一...

  • 类目、延展

    目录:1、类目2、延展 1、类目(类别)Category 1.从定义看类目就是给类来添加一个眼睛?,哈哈,其实就是...

  • 类目 延展 协议

    前言 Objective-C中提供了可以让我们扩展类定义的手段:类目,延展和协议。类目:为已知的类增加新的方法;延...

  • 类目和延展

    0、封装 一、类目(category)的基本概念和用法 1、封装是面向对象的一个特征,OC也不意外,但有时候我们会...

  • OC类目、延展

    类目: 定义:为现有工程中的类和系统类添加新的方法 作用:在类目中添加新的方法及属性和在原类中添加方法和属性是一样...

  • 类目和延展

    main.h 1.延展Person_PersonExtension.h Person.h Person.m 2.为...

  • 类别(category)延展(extension)

    Objective-c中提供了可以让我们扩展类定义的手段:类目,延展和协议。类目:为已知的类增加新的方法;延展:通...

  • 类目和延展的作用和区别

    类目和延展的作用都是为了扩展一个类。一、类目的定义和作用 二、类目的声明: 三、类目实现: 四、类目使用需要注意的...

  • iOS-类目、延展

    一、类目 类目:非正式协议(类目名)对一个类(原有类-什么都没有)方法的扩展(注:只允许添加方法不允许添加变量) ...

  • iOS类目、延展、协议

    1.类目 类目就是为已存在的类添加新的方法。但是不能添加实例变量。比如系统的类,我们看不到他的.m文件,所以没有办...

网友评论

      本文标题:ObjectObject-C类目与延展、单例

      本文链接:https://www.haomeiwen.com/subject/axrljttx.html