对象的构造
在上一篇blog中,我提取了孟岩的一些观点,说明对象范式(面向对象)的一些基本观点。我认为面向对象的核心就是:如何管理对象以及如何实现对象间的消息传递。现在主流的面向对象语言通过类来实现对象的构造,通过函数调用来实现对象间的消息传递。今天我主要想谈一下,在OC中对象的构造。
一、类、对象
类,在我看来像是蓝图,我们通过类来建造对象这座大厦。类决定了一个对象是什么样子以及能够有些什么功能,类是对对象的一个抽象。
如何写一个类?我们可以从两个方面入手:1、类所描述的对象的基本属性。如:一个学生类,应该能描述学生的基本情况,学号、班级等等。2、类说描述的对象的行为。如:一个学生类,应该能描述学生的基本行为,学习、吃房、休闲等。
在OC中一个类包括:对象的属性和方法。
二、类的构造方法
类是通过构造方法完成对象的构造。OC中一个对象的构造分成三部:
1、在堆区申请一片内存用于存放该对象
2、对对象进行初始化
3、返回该对象的内存地址
默认构造函数:new与 alloc init
#import <Foundation/Foundation.h>
#import "Person.h"
#import "Dog.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
//创建人对象
//默认构造函数
Person *lele=[Person new];
[lele release];
}
return 0;
}
通过new创建对象
//main.m
#import <Foundation/Foundation.h>
#import "Person.h"
#import "Dog.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
//创建人对象
//默认构造函数
Person *lele=[[Person alloc]init];
[lele release];
}
return 0;
}
通过alloc init创建对象。
new可以认为是alloc
init的简写形式。alloc init可以使用非默认的初始化方法,initWithAge在创建对象的同时,给对象的age属性初始化。
三、对象的销毁
在OC中对象的销毁,主要有MRC,
ARC两种模式, MRC通过手动的调用release方法或者调用autorelease方法将对象加入自动释放池,ARC模式下只要对象没有强指针指向就会自动销毁。