分享

Objective-C知识点总结

 叹落花 2014-12-20

1. 内存管理

引用计数(保留计数)

每个对象有一个与之相关联的整数,称作它的引用计数器。当某段代码需要访问一个对象时,该段代码将该对象de保留计数器值加1。当这段代码结束对象访问时,将对象de保留计数器减1。当保留计数器值为0时,对象将被销毁,其占有的内存被系统回收。

当一个对象因其保留计数器归0而即将被销毁时,Objective-C自动向对象发送一条dealloc消息。

retain方法返回一个id类型的值,通过这种方法可以嵌套执行带有其他消息发送参数的保留调用,增加对象的保留计数器值并要求对象完成某种操作。

所有权

实体要负责确保对其拥有的对象进行清理。

自动释放池(autorelease pool)

Cocoa的内存管理规则

(1)当你使用new、alloc、copy方法创建一个对象时,该对象的保留计数器值为1。当不再使用该对象时,你要负责向该对象发送一条release或autorelease消息。

(2)当你通过任何其他方法获得一个对象时,则假设该对象的保留计数器值为1,而且已经被设置为自动释放,你不需要执行任何操作来确保该对象被清理。

(3)如果你保留了某个对象,你需要释放或自动释放该对象。必须保持retain方法和release方法的使用次数相等。

2. 对象初始化

[类名  new]       [[类名 alloc] init]

 初始化是从操作系统取得一块内存,准备用于存储对象。

 (id)init

  if(self = [super  init])

 {    //初始化参数的值

  }else

        {return nil;}

  return  self;

 }

[super  init],使超类完成它们自己的初始化工作。

指定初始化函数

类中的某个初始化方法被指派为初始化函数,该类的所有初始化方法使用指定初始化函数执行初始化操作。子类使用其超类的指定初始化函数实现超类的初始化。一般接受参数最多的初始化方法最终成为指定初始化函数。

3. 特性

  @property@synthesize

 @property是一种新的编译器功能,表示声明了一个新象的属性。

 @synthesize也是一种新的编译器功能,表示属性的访问器。

 相的涵盖setter()与getter()方法。

4. 类别(category)

利用Objective-C的动态运行时的分配机制,为现有的类添加新方法。

类别的声明格式:

@interface  类名 (类别名)

 (添加的新方法)

@end

类别的局限性:无法向类中添加新的实例变量;名称冲突,即类别中的方法与现有的方法重名。当发生名称冲突时,类别具有更高的优先级。

5. 协议(protocol)

Objective-C中一种特有的继承方式,它声明了一系列方法,却不实现,仅仅是定义了其他对象有责任实现的接口,里面的方法可以被任何一个类实现。

协议的声明格式:

 @protocol  协议名

  (方法名)

 @end

使用协议的方法:

在类的声明中使用协议,在其后用尖<>括号括起来,若引用多个协议,协议中间用“,”隔开。

引用协议意味着需要实现协议的所有方法。

一个类只能继承一个父类,但可以实现多个协议

在协议的方法前可以添加@optional  和  @required指令

 -@optional :表示该方法是可选实现的

-@required:表示该方法必须实现

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多