国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - IOS - IOS中(assign,retain,copy,weak,strong)的區(qū)別以及nonatomic的含義

IOS中(assign,retain,copy,weak,strong)的區(qū)別以及nonatomic的含義

2021-03-08 15:23iOS開發(fā)網(wǎng) IOS

這篇文章主要介紹了我們?cè)诼暶鰼property 屬性時(shí),總是要在括號(hào)中寫上assign、retain、copy、weak、strong中的一個(gè),他們的區(qū)別,需要的朋友可以參考下

IOS中(assign,retain,copy,weak,strong)的區(qū)別以及nonatomic的含義

我們?cè)诼暶鰼property 屬性時(shí),總是要在括號(hào)中寫上assign、retain、copy、weak、strong中的一個(gè),很多時(shí)候,我們僅僅只是按照習(xí)慣去寫經(jīng)常寫的那一個(gè),但有時(shí)候看代碼時(shí)又會(huì)發(fā)現(xiàn)別人用的不盡相同,那這些之間的區(qū)別是什么呢?

首先,上面五個(gè)并不是在一個(gè)層面上的,可以分為兩部分,第一部分是assign、retain、copy,第二部分是weak、strong。

我們先說第一部分的assign、retain、copy。

assign:

assign一般用來修飾基本的數(shù)據(jù)類型,包括基礎(chǔ)數(shù)據(jù)類型 (NSInteger,CGFloat)和C數(shù)據(jù)類型(int, float, double, char, 等等),為什么呢?assign聲明的屬性是不會(huì)增加引用計(jì)數(shù)的,也就是說聲明的屬性釋放后,就沒有了,即使其他對(duì)象用到了它,也無法留住它,只會(huì)crash。但是,即使被釋放,指針卻還在,成為了野指針,如果新的對(duì)象被分配到了這個(gè)內(nèi)存地址上,又會(huì)crash,所以一般只用來聲明基本的數(shù)據(jù)類型,因?yàn)樗鼈儠?huì)被分配到棧上,而棧會(huì)由系統(tǒng)自動(dòng)處理,不會(huì)造成野指針。

retain:

與assign相對(duì),我們要解決對(duì)象被其他對(duì)象引用后釋放造成的問題,就要用retain來聲明。retain聲明后的對(duì)象會(huì)更改引用計(jì)數(shù),那么每次被引用,引用計(jì)數(shù)都會(huì)+1,釋放后就會(huì)-1,即使這個(gè)對(duì)象本身釋放了,只要還有對(duì)象在引用它,就會(huì)持有,不會(huì)造成什么問題,只有當(dāng)引用計(jì)數(shù)為0時(shí),就被dealloc析構(gòu)函數(shù)回收內(nèi)存了。

copy:

最常見到copy聲明的應(yīng)該是NSString。copy與retain的區(qū)別在于retain的引用是拷貝指針地址,而copy是拷貝對(duì)象本身,也就是說retain是淺復(fù)制,copy是深復(fù)制,如果是淺復(fù)制,當(dāng)修改對(duì)象值時(shí),都會(huì)被修改,而深復(fù)制不會(huì)。之所以在NSString這類有可變類型的對(duì)象上使用,是因?yàn)樗鼈冇锌赡芎蛯?duì)應(yīng)的可變類型如NSMutableString之間進(jìn)行賦值操作,為了防止內(nèi)容被改變,使用copy去深復(fù)制一份。copy工作由copy方法執(zhí)行,此屬性只對(duì)那些實(shí)現(xiàn)了NSCopying協(xié)議的對(duì)象類型有效 。

以上三個(gè)可以在MRC中使用,但是weak和strong就只能在ARC中使用,也就是自動(dòng)引用計(jì)數(shù),這時(shí)就不能手動(dòng)去進(jìn)行retain、release等操作了,ARC會(huì)幫我們完成這些工作。

weak:

weak其實(shí)類似于assign,叫弱引用,也是不增加引用計(jì)數(shù)。一般只有在防止循環(huán)引用時(shí)使用,比如父類引用了子類,子類又去引用父類。IBOutlet、Delegate一般用的就是weak,這是因?yàn)樗鼈儠?huì)在類外部被調(diào)用,防止循環(huán)引用。

strong:

相對(duì)的,strong就類似與retain了,叫強(qiáng)引用,會(huì)增加引用計(jì)數(shù),類內(nèi)部使用的屬性一般都是strong修飾的,現(xiàn)在ARC已經(jīng)基本替代了MRC,所以我們最常見的就是strong了。

nonatomic:

在修飾屬性時(shí),我們往往還會(huì)加一個(gè)nonatomic,這又是什么呢?它的名字叫非原子訪問。對(duì)應(yīng)的有atomic,是原子性的訪問。我們知道,在使用多線程時(shí)為了避免在寫操作時(shí)同時(shí)進(jìn)行寫導(dǎo)致問題,經(jīng)常會(huì)對(duì)要寫的對(duì)象進(jìn)行加鎖,也就是同一時(shí)刻只允許一個(gè)線程去操作它。如果一個(gè)屬性是由atomic修飾的,那么系統(tǒng)就會(huì)進(jìn)行線程保護(hù),防止多個(gè)寫操作同時(shí)進(jìn)行。這有好處,但也有壞處,那就是消耗系統(tǒng)資源,所以對(duì)于iPhone這種小型設(shè)備,如果不是進(jìn)行多線程的寫操作,就可以使用nonatomic,取消線程保護(hù),提高性能。

感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美在线不卡视频 | 国产在线精品一区二区 | 国产一区二区三区在线免费看 | 午夜在线观看视频 | 精品国产青草久久久久福利 | 一级a性色生活片毛片 | 国产特黄一级 | 男女爱爱视频免费 | 91福利视频免费 | 久久国产精品一区二区三区 | 国产精品成人3p一区二区三区 | 性片网站 | 999精品视频 | 夜夜嗨av色一区二区不卡 | 亚洲国产高清高潮精品美女 | 黄免费看| 欧美日韩国产一区二区三区 | av在线干 | 福利片在线 | 久久久久久久久久久免费 | 成人妇女免费播放久久久 | 青青草原亚洲 | 欧美精品在线一区二区三区 | 色九九九 | 国产精品18久久久久久久久久久久 | 黄网站涩免费蜜桃网站 | 亚洲一区二区三区 | 日韩欧美在线播放 | 欧美一区二区在线免费观看 | 国产精品久久久久久久久软件 | 99免费在线视频 | 久久久国产一区二区三区 | 国产亚洲精品久久久久动 | 久久精品国产免费 | 免费在线观看黄色 | 2019中文字幕视频 | 国产高清在线视频 | 欧美日韩在线视频观看 | 99国产精品99久久久久久 | 精品国产凹凸成av人导航 | 日本黄色a视频 |