您的位置:首页 > 大数据 > 人工智能

简述OC中内存管理机制。与retain配对使用的方法是dealloc还是release,为什么?需要与alloc配对使用的方法是dealloc还是release,为什么?readwrite,reado

2016-05-18 14:56 691 查看
OC使用了一种叫做引用计数的机制来管理对象,如果对一个对象使用了alloc[Mutable]copyretain,那么你必须使用相应的realease或者autorelease。也可以理解为自己生成的对象,自己持有。非自己生成的对象,自己也能持有。不在需要自己持有的对象时释放。非自己持有的对象无法释放。生成并持有对象<alloc,new,copy,mutableCopy>,持有对象<retain>,释放对象<release>,废弃对象<dealloc>readwrite(默认):可读可写,表示既有getter方法,也有setter方法。readonly:表示只有getter方法,没有setter方法。nonatomic:不考虑线程安全。atomic(默认):线程操作安全。strong(默认):ARC下和MRCretain一样,weakARC下):和(MRC)assign类似,区别是当weak指向的内存释放掉后自动置为nil,防止野指针。

unsafe_unretained声明一个若引用,但不会自动置为nil,可能会出现野指针。
线程安全下的settergetter方法:

NSString *value{

@synchronizedself{
return [[_value retain] autorelease];
}
}

(void)setValue:(NSString *)aValue{

@synchronized(self){
[aValue retain];
[_value release];
_value = aValue;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: