美文网首页
iOS开发:oc编程(1)-GeekBand

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

作者: 剧情简介第一天 | 来源:发表于2016-10-16 17:17 被阅读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

    相关文章

      网友评论

          本文标题:iOS开发:oc编程(1)-GeekBand

          本文链接:https://www.haomeiwen.com/subject/jfoojttx.html