iOS基础之OC对象的本质与生命周期管理
2023-12-12 13:20:00
一、简介
在Swift语言还没有出现的时候,iOS开发使用的是Objective-C这门语言,Objective-C是C语言的超集,Objective-C的代码底层都是由C/C++编写而成。因此,了解Objective-C对象本质对于理解iOS开发非常重要。
二、对象的本质
在Objective-C中,对象是指具有状态和行为的实体,它可以与其他对象交互以完成特定的任务。一个对象由三个部分组成:
- 属性(Properties): 属性是对象的特征,例如人的姓名、年龄、性别等。属性可以是可读的(read-only)或可写的(read-write),也可以是公共的(public)或私有的(private)。
- 方法(Methods): 方法是对象的行为,例如人的行走、说话、吃饭等。方法可以接受参数并返回结果,也可以不接受参数也不返回结果。
- 实例变量(Instance Variables): 实例变量是对象的私有数据,只能在对象内部访问。实例变量通常用于存储对象的当前状态。
三、内存管理
在Objective-C中,对象的内存管理采用引用计数(Reference Counting)的方式。当一个对象被创建时,它的引用计数为1。当另一个对象引用它时,它的引用计数就会增加1。当一个对象不再被任何其他对象引用时,它的引用计数就会变为0,此时该对象就会被释放。
四、属性
属性是对象的特征,可以通过点语法(dot syntax)来访问。例如,以下代码访问了person对象name属性的值:
NSString *name = person.name;
属性可以是可读的(read-only)或可写的(read-write),也可以是公共的(public)或私有的(private)。可读属性只能被读取,不能被修改。可写属性可以被读取和修改。公共属性可以在类的任何地方被访问。私有属性只能在类内部被访问。
五、方法
方法是对象的的行为,可以通过点语法(dot syntax)来调用。例如,以下代码调用了person对象sayHello方法:
[person sayHello];
方法可以接受参数并返回结果,也可以不接受参数也不返回结果。参数列表放在方法名后面,用括号括起来。返回值类型放在方法名前面,用冒号(:)隔开。
六、实例变量
实例变量是对象的私有数据,只能在对象内部访问。实例变量通常用于存储对象的当前状态。实例变量声明在类的实现部分,用@符号开头。例如,以下代码声明了一个名为_name的实例变量:
@interface Person : NSObject {
NSString *_name;
}
七、类变量
类变量是属于整个类的变量,所有该类的对象都可以访问。类变量声明在类的接口部分,用static开头。例如,以下代码声明了一个名为_numberOfPeople的类变量:
@interface Person : NSObject {
static int _numberOfPeople;
}
八、生命周期管理
对象的创建和销毁由Objective-C的内存管理系统自动管理。当一个对象被创建时,它的引用计数为1。当另一个对象引用它时,它的引用计数就会增加1。当一个对象不再被任何其他对象引用时,它的引用计数就会变为0,此时该对象就会被释放。
可以使用以下方法来手动释放对象:
- [object release] :释放对象并减少其引用计数。
- [object retain] :增加对象的引用计数。
- [object autorelease] :将对象添加到自动释放池(autorelease pool)中,当自动释放池被销毁时,其中的对象也会被释放。
结语
以上就是iOS基础之OC对象本质与生命周期管理的相关内容,希望对您有所帮助。如果您有任何疑问,欢迎在评论区留言。