自己生成的对象,自己所持有
使用以下名称开头的方法名意味着自己生成的对象只有自己持有
- alloc
- new
- copy
- mutableCopy
下列名称也意味着自己生成并持有对象
- allocMyObject
- newThisObject
- copyThis
- mutableCopyYourObject
但是对于以下方法名称,即使用alloc/new/copy/mutableCopy名称开头,并不属于同一类别的方法
- allocate
- newer
- copying
- mutableCopyed
非自己生成的对象,自己也能持有
/*
取得非自己生成并持有的对象
*/
id obj = [NSMutableArray array];
/*
取得的对象存在,但自己并不持有
*/
[obj retain]
/*
自己持有对象
*/
不再需要自己持有的对象时释放
自己生成并持有对象,可通过一下方法实现
-(id)allocObject//要符合驼峰命名法
{
id obj = [[NSObject alloc]init];
return obj;
}
那么[NSMutableArray array]方法使取得的对象存在,但自己不持有对象,又是如何实现的呢
-(id)object{
id obj = [[NSObject alloc]init];
[obj autorelease];
return obj;
}
autorelease使对象在超出指定的生存范围时能够自动并正确的释放。
无法释放非自己持有的对象
释放非自己持有的对象会导致程序崩溃