1.oc简介
1.打印hello world
2.clong llvm的应用理解
2.类与对象
(一)
兼容c
类型系统:引用类型 指类型 类型装饰
(二)
栈(stack)和堆(heap)
1.栈:
无ARC负担,
空间大小在编译结束后即确定
函数结束时,栈立即销毁
2.堆:存储引用类型对象
有arc机制
引用函数通过拷贝指针进行传递
容易产生内存泄漏
内存泄漏:如果我们不人为地对它们进行回收,只“借”不“还”,那么系统资源就会枯竭,电脑的运行速度就会越来越慢,直至整个系统崩溃。我们把这种只申请空间不释放空间的情况称为内存泄露(memroy leak)
重点:
画内存图
3.数据成员:属性和实例变量
循环引用 :导致内存泄漏 solve way:@property(weak)
3.数据成员:属性与实例
4.函数成员:方法
(一)认识方法method
1.所有方法都是公有方法。无类似C++的public private protected等方法
(二)实例方法或类型方法
1.
实例方法:参数前为-号 如:-(void) print;
类型方法:参数前为+号
2.
self指针
类型方法:仅仅是当前一个类的表示,不表示实例
实例方法:传递的是实例方法的指针
(三)方法参数
1.
参数名:分为内部、外部参数名。
-(void) moveTox:(int)x toY(int)y
第一个参数名不需要外部参数名
驼峰命名法
2.
类型:
值类型:
引用类:传的是指针
无参数/无返回值
(四)动态方法调用机制-消息分发表:
id:声明所有的类型。
id obj=[[BLNPoint alloc] init];
[obj moveTox:50 toY:60];
内存:灰色部分 包含一个methodLists :查找机制,if方法过多,oc提供一种优化的方法,牺牲性能,带来灵活。
5.初始化器与析构器
(一)初始化器:
1.对象初始化器
init:-自定义
(1).调用父类初始化器-前置调用
如下:
self = [super init];
if(self){
}
(2).init初始化器内部使用实例变量,不要使用属性。
(3).指定初始化器与便捷初始化器的使用区别
还需注意:
Book *b1 = [[Book alloc] init];
Book *b1 = [Book alloc];
[b1 init];某些情况下b1返回的指针与b1不一样
应该如下写:b1 =[b1 init];
alloc:-NSObject已经实现
1.在堆上分配合适的大小和内存
2.属性或者内存变量置0
new:
1.无法传递参数-无参数版本的alloc、init 初始化器。
2.类初始化器-initialize
1.系统自动调用
2.每个类仅调用一次。
(二)对象析构器:
dealloc
网友评论