OC基础

自动释放池的基本概念

cocoa中有一个自动释放池(Autorelease pool)的概念,顾名思意,它是可以存放一些实体的集合,在这个自动释放池中的对象,是能够被自动释放的,NSObject类提供了一个autorelease消息,当我们向一个对象发送autorelease消息时,这个对象就被放入了自动释放池。

创建自动释放池

@autorelease{

//5.0之后

}

NSAutoreleasePool  *pool=[[NSAutorelease alloc]init];

//5.0之前

[pool release];

自动释放池的销毁时间

当我们将一个对象发送了autorelease消息时,当自动释放池销毁时,会对池中的每个对象发送一条release消息,以释放它们。

ARC自动引用技术

MRC手动引用技术

Category

OC提供了一种与众不同的方式--Catagory,可以动态的为已经存在的类添加新的行为(方法)。

使用Category对类进行扩展时,不需要创建子类

这样可以保证类的原始设计规模较小,功能增加时再逐步扩展。

为一个类新增方法时,选择Objective-C-catagory

Category是对一个功能完备的类的一种补充,就像是一个东西的主要基本功能都完成了,可以用category为这个类添加不同的组件,使得这个类能够适应不同情况的需求(但是这些不同需求最核心的需求要一致)。找个就像你已经有了一辆能够开动的汽车一样,我们可以用Category为你的汽车添加各种之前没有的功能,最后让这辆汽车变成超级跑车一样。

当某个类非常大的时候,Category可以按不同的功能将类的实现分在不同的模块中实现。

ARC与非ARC

在ARC项目中使用非ARC的框架解决方案:

在target里的build phases中,找到compile sources,把涉及到非ARC的类,后面加上: -fno-objc-arc

在非ARC的项目中加入ARC类库:

如何在未使用arc的工程中引入一个使用了arc特性的文件:对相应的文件添加: -fobjc-arc

你可能感兴趣的:(OC基础)