簡述OC中內存管理機制。與retain配對使用的方法是dealloc還是release,為什么?需要與alloc配對使用的方法是dealloc還是release,為什么?readwrite,readonly,assign,retain,copy,nonatomic 、atomic、strong、weak屬性的作用?

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 [[_value retain] autorelease];

}

}

-(void)setValue:(NSString *)aValue{

@synchronized(self){

[aValue retain];

[_value release];

_value = aValue;

}

}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容