黑马程序员技术交流社区
标题: 请教这两个写法 [打印本页]
作者: tz19900926 时间: 2015-10-5 14:55
标题: 请教这两个写法
if(_name != name){
[_name release];
_name = [name retain];
}
用在内存管理
这两个写法和用于哪里是正确的吗? 已经完全混淆了晕晕的 ,有同样晕的童鞋吗?
用在自定义结构方法
-(instancetype)initWithXXX:(int)age{
if (self = [super init]){
_age = age;
}
return self;
}
作者: tz19900926 时间: 2015-10-5 14:57
经常写成....
if( self = [super init] ){
[_name release];
_name = [name retain];
}

作者: ff774411 时间: 2015-10-5 15:00
第一个还没开始学到,不过第二个应该是类对象的重构方法吧,用以初始化类的实例属性,这样应该比较好记忆。
作者: tz19900926 时间: 2015-10-5 15:27
- 内存管理的几条原则是什么?按照默认法则.哪些方法生成的对象需要手动释放?在和property结合的时候怎样有效的避免内存泄露?
- 1、只要调用了alloc、copy、new方法产生了一个新对象,都必须在最后调用一次release或者autorelease
- 2、只要调用了retain,都必须在最后调用一次release或者autorelease
- 3、@property如果用了copy或者retian,就需要对不再使用的属性做一次release操作
- 4、如果用了ARC,另外讨论
作者: tz19900926 时间: 2015-10-5 18:28
晕晕的
| 欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |