iOS面试题:简述 OC 中内存管理机制。与 retain 配对使用的方法是 dealloc 还 是 release,为什么?需要与 alloc 配对使用的方法是 dealloc 还是 rele...

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

-(NSString*)value{
@synchronized(self){
return[[_valueretain]autorelease];
}
}
-(void)setValue:(NSString*)aValue{
@synchronized(self){
[aValueretain];
[_valuerelease];
_value=aValue;
}
}

更多:iOS面试题合集

你可能感兴趣的:(iOS面试题:简述 OC 中内存管理机制。与 retain 配对使用的方法是 dealloc 还 是 release,为什么?需要与 alloc 配对使用的方法是 dealloc 还是 rele...)