Objective-C知识点总结(二)
2013-11-28 08:37
218 查看
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:表示该方法必须实现
引用计数(保留计数)
每个对象有一个与之相关联的整数,称作它的引用计数器。当某段代码需要访问一个对象时,该段代码将该对象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语言知识点总结之OC特有语法
- objective-c知识点易混点总结
- 收集的Objective-C runtime博客及知识点总结
- 黑马程序员——Objective-C知识点总结之类和对象
- Objective-C开发——数据类型知识点总结
- Objective-C学习阶段的知识点总结
- 黑马程序员——Objective-C语言知识点总结之内存管理、Block、Protocol
- iOS开发核心语言Objective C —— 所有知识点总结
- iOS开发核心语言Objective C —— 全部知识点总结
- Objective-C知识点总结(一)
- Objective-C基础知识点总结
- 黑马程序员——Objective-C语言知识点总结之面向对象
- Objective-C在IOS中的一些使用知识点总结
- Objective-C 知识点总结
- CSS3主要知识点总结+HTML5新增标签
- 知识点总结
- jQuery知识点总结(第二天)
- 找工作笔试面试那些事儿(13)---操作系统常考知识点总结
- Java 知识点总结之Java 并发 API(二)
- Objective-C内存管理总结〜CC专版