日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Objective-C中@property的所有属性详解

發(fā)布時間:2024/9/30 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Objective-C中@property的所有属性详解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1,assign : 簡單賦值,不更改索引計數(shù) 假設(shè)你用malloc分配了一塊內(nèi)存,并且把它的地址賦值給了指針a,后來你希望指針b也共享這塊內(nèi)存,于是你又把a賦值給(assign)了b。此時a 和b指向同一塊內(nèi)存,請問當(dāng)a不再需要這塊內(nèi)存,能否直接釋放它?答案是否定的,因為a并不知道b是否還在使用這塊內(nèi)存,如果a釋放了,那么b在使用這塊內(nèi)存的時候會引起程序crash掉 應(yīng)用場合: 對基礎(chǔ)數(shù)據(jù)類型 (例如NSInteger,CGFloat)和C數(shù)據(jù)類型(int, float, double, char, 等) ? ? ? 適用簡單數(shù)據(jù)類型 2,retain: 與strong相對應(yīng),使用了引用計數(shù),retain+1,release -1;當(dāng)引用 計數(shù)為0時,dealloc會被調(diào)用,內(nèi)存被釋放 3,copy: 用于非共享內(nèi)存時,每個指針有自己的內(nèi)存空間 4,atomic//默認(rèn)屬性 A,當(dāng)一個變量聲明為atomic時,意味著在多線程中只能有一個線程能對它進行訪問 B,當(dāng)一個變量聲明為atomic時,該變量為線程安全型,但是會影響訪問速度, C,當(dāng)一個變量聲明為atomic時,在非ARC編譯環(huán)境下,需要設(shè)置訪問鎖來保證對該變量進行正確的get/set 5,nonatomic A, ? ? 當(dāng)一個變量聲明為nonatomic時,意味著多個線程可以同時對其進行訪問 B, ? ? 當(dāng)一個變量聲明為nonatomic時,它是非線程安全型,訪問速度快; C, ? ? 當(dāng)一個變量聲明為nonatomic時,當(dāng)兩個不同的線程對其訪問時,容易失控。 總結(jié):atomic和nonatomic用來決定編譯器生成的getter和setter是否為原子操作。在多線程環(huán)境下,原子操作是必要的,否則有可能引起錯誤的結(jié)果。加了atomic,setter函數(shù)會變成下面這樣:? if (property != newValue) { ?? [property release]; ?? property = [newValue retain]; ?? } 6,strong://ARC中默認(rèn)屬性,等于非ARC中的retain 與retain相對應(yīng), 應(yīng)用場景: strong屬性用于ARC中 @property (strong,nonatomic) ViewController *viewController; 7,weak: 與assign 相對應(yīng), 應(yīng)用場景: 用于IBOutlets,如,UIViewController的子類,即一般的控件。 @property (weak, nonatomic) IBOutlet UIButton *myButton; strong與weak的區(qū)別舉例: 前提: 我們把要用strong或者weak的對象比作一只風(fēng)箏,風(fēng)箏想掙脫線的束縛,自由飛翔去,如果此時有一根線,那么這只風(fēng)箏就掙脫不了 過程分析 strong屬性的變量: 當(dāng)我們把指向一只風(fēng)箏的變量聲明為strong時,此時,你就擁有控制這只風(fēng)箏的線,假如此時有五個人同時控制這只風(fēng)箏(即這只風(fēng)箏對象有三個strong類型的變量指向它),那么只有一種情況,這只風(fēng)箏才會掙脫掉線的束縛:這三個人都放掉手中的線,(release掉) weak屬性的變量: 當(dāng)我們把指向一只風(fēng)箏的變量聲明為weak時,此時,就像站在旁邊看風(fēng)箏的觀眾們一樣,當(dāng)上面的三個人還握著手中的線時,他們只能看到風(fēng)箏,并不能控制它,他們能做的只能是用手指指向風(fēng)箏,并大喊,“看,那只風(fēng)箏飛得真高!”,然而,當(dāng)上面的三個人把手中的線都放掉時,此時,風(fēng)箏飛走了,看不見了,不管有再多的觀眾,他們再也看不到風(fēng)箏了,這個故事告訴我們一個道理:當(dāng)strong類型的指針被釋放掉之后,所有的指向同一個對象的weak指針都會被清零。 8,readonly 只有g(shù)et方法,沒有set方法 9,readwrite//默認(rèn)屬性 有g(shù)et/set方法 10,unsafe_unretauined 用在ARC編譯環(huán)境下,在此環(huán)境下,與assign相似。它只是告訴ARC如何正確地調(diào)用聲明為unsafe_unretauined變量的retain和release

總結(jié)

以上是生活随笔為你收集整理的Objective-C中@property的所有属性详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。