黑马程序员技术交流社区

标题: oc基础笔记 [打印本页]

作者: 初见兔儿哥    时间: 2015-8-5 22:06
标题: oc基础笔记
retain :计数器+1,会返回对象本身

release :计数器-1,没有返回值

retainCount :获取当前的计数器

dealloc:当一个对象要被回收的时候,就会调用dealloc方法

    一定要调用[super dealloc],这句调用要放在最后面



set方法内存管理相关的参数
retain :release旧值,retain新值(适用于OC对象类型)
assign : 直接赋值(默认,适用于非OC对象类型)
copy   : release旧值,copy新值

是否要生成set方法

readwrite : 同时生成setter和getter的声明、实现(默认)

readonly : 只会生成getter的声明、实现


多线程管理

nonatomic : 性能高 (一般情况都使用此选项)

atomic   : 性能低(默认)


setter和getter方法的名称

setter : 决定了set方法的名称,一定要有个冒号 :

getter : 决定了get方法的名称(一般用在BOOL类型)


// 返回BOOL类型的方法名一般以is开头

@property (getter = isExist) BOOL exist;  // 是否存在



@class

作用:仅仅告诉编译器,某个名称是一个类

@class Person; // 仅仅告诉编译器,Person是一个类



开发中引用一个类的规范

1:在.h文件中用@class来声明需要引用的类

2:在.m文件中用#import来包含类的所有东西


两端循环引用解决方案

1:一端用retain

2:一端用assign



ARC
判断准则:只要没有强指针指向对象,就会释放对象
特点:

1:不允许调用release、retain、retainCount

2:允许重写dealloc,但是不允许调用[super dealloc]

3:@property的参数:

  * strong :成员变量是强指针(适用于OC对象类型)

  * weak :成员变量是弱指针(适用于OC对象类型)

  * assign : 适用于非OC对象类型


强指针:默认情况下,所有的指针都是强指针 __strong

弱指针:__weak


// 错误写法(没有意义的写法)

__weak Person *p = [[Person alloc] init];

因为弱指针p指向一个Person对象,该

Person对象一创建就会被释放
当两端循环引用的时候,解决方案:

ARC下:

1端用strong,另1端用weak


非ARC下:

1端用retain,另1端用assign
作者: 15132876050    时间: 2015-8-20 20:01
不错学习了    继续努力




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2