iOS开发:oc编程(1)-GeekBand

2016-10-16  本文已影响0人  剧情简介第一天

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

上一篇下一篇

猜你喜欢

热点阅读