A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 初见兔儿哥 中级黑马   /  2015-8-5 22:06  /  425 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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

1 个回复

倒序浏览
不错学习了    继续努力
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马