c语言assign用法,object-c语言的nonatomic,assign,copy,retain的区别
nonatomic:
非原子性訪問,不加同步,多線程并發(fā)訪問會提高性能。如果不加此屬性,則默認是兩個訪問方法都為原子型事務(wù)訪問。
(atomic是Objc使用的一種線程保護技術(shù),基本上來講,是防止在寫未完成的時候被另外一個線程讀取,造成數(shù)據(jù)錯誤。而這種機制是耗費系統(tǒng)資源的,所 以在iPhone這種小型設(shè)備上,如果沒有使用多線程間的通訊編程,那么nonatomic是一個非常好的選擇。)
assign:
簡單賦值,不更改索引計數(shù)
對基礎(chǔ)數(shù)據(jù)類型 (NSInteger)和C數(shù)據(jù)類型(int,?float,?double,?char, 等)
copy:
建立一個索引計數(shù)為1的對象,然后釋放舊對象
對NSString
retain:
釋放舊的對象,將舊對象的值賦予輸入對象,再提高輸入對象的索引計數(shù)為1
對其他NSObject和其子類
copy與retain的區(qū)別:
copy是創(chuàng)建一個新對象,retain是創(chuàng)建一個指針,引用對象計數(shù)加1。
eg:?? 一個NSString?對象,地址為0×1111?,內(nèi)容為@”STR”
Copy?到另外一個NSString?之后,地址為0×2222?,內(nèi)容相同,新的對象retain為1?,舊有對象沒有變化
retain?到另外一個NSString?之后,地址相同(建立一個指針,指針拷貝),內(nèi)容當然相同,這個對象的retain值+1
也就是說,retain?是指針拷貝,copy?是內(nèi)容拷貝。
原文:http://www.cnblogs.com/langtianya/p/3794735.html
總結(jié)
以上是生活随笔為你收集整理的c语言assign用法,object-c语言的nonatomic,assign,copy,retain的区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Effective Java~23. 类
- 下一篇: 【itext学习之路】--5.对pdf进