Objective-C知识点总结(二)
来源:互联网 发布:北京java认证资格培训 编辑:程序博客网 时间:2024/06/09 18:50
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:表示该方法必须实现
- Objective-C知识点总结(二)
- Objective-C 知识点总结
- Objective-C知识点总结
- Objective-C知识点总结(一)
- objective-c知识点易混点总结
- 【iOS开发干货】Objective-C基础知识点总结(一)
- C/C++知识点总结(二)
- Objective-C学习阶段的知识点总结
- Objective-C学习阶段的知识点总结
- Apple程序开发总结-- (二)Objective-C
- objective-c语言基础知识总结(二)[201110101650]
- objective-c自学总结(二)---init/set/get方法
- Effective Objective-C 2.0 总结(二)上
- Effective Objective-C 2.0 总结(二)下
- 《thinking in c++》Volume 1知识点总结(二)
- C语言基础-零散知识点总结(二)
- C++primerplus知识总结二 (类知识点)
- Objective-C知识点汇总
- 开发代码版本管理工具
- java中URL和File的相互转化 及两者的使用场景
- UVA 10986 - Sending email(最短路 优先队列的优化+Bellman-Ford)
- linux下的sh和bash区别
- com.microsoft.sqlserver.SQLServerException:索引1超出范围
- Objective-C知识点总结(二)
- LM2575电源电路设计测试总结
- MinGW编译C++11备忘
- 第一次博客
- Gentoo的前世今生
- cocos2d-x安卓中Java_org_cocos2dx_lib_Cocos2dxRenderer.cpp等jni中文件被优化
- 一个男人关心的东西 决定了他的层次
- 最终的Linux版本决定
- Leader/Follower多线程网络模型介绍