- 博客(5)
- 收藏
- 关注
原创 autorelease的使用和注意
1.当我们创建一个对象时,(1)Person *p = [[Person alloc] init],就需要在下方执行一次(2)[p release],而[p release]一般放在最后,如果紧跟(1)的话,当创建完对象,对象就会被销毁,成为僵尸对象,假设,Person中有age属性,则再执行(3)p.age = 10;无疑会报错(野指针错误),如果放在程序的最后面的话,则p.age 正常执行。所
2015-07-08 23:12:16 3046
原创 关于OC内存管理-03
1.对于上篇文章,对象的实例变量(OC对象类型)的setter方法,只是执行一次retain操作,则这个程序是有缺陷的。可以想到的是,如果我们不小心在main.m里多执行了一次p.book = b ,则我们又执行了一次retain操作,此时计数器又加上了1,不符合内存管理原则。但是如何修改呢。 我们可以在执行retain操作做一个判断,如果传进来的对象参数和实例变量不相等 则进行retain操作
2015-07-07 23:41:57 709
原创 OC内存管理-02
假设我们有一个人的类Person和类Book,类的具体实例变量和方法如下 (1) Person.h #import #import "Book.h" @interface Person : NSObject { //Person类中有书 Book *_book; } -(void)setBook:(Book *)book; -(Book *)book; @end
2015-07-06 22:51:43 416
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人