亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

iOS 各種修飾符的區別匯總

2020-02-19 15:45:09
字體:
來源:轉載
供稿:網友

IOS的開發中,我們都需要使用property,但是你們可能沒有像小編那樣徹底理解它,一起去來看看日武林技術頻道小編給大家帶來的iOS 各種修飾符的區別匯總吧!

atomic

設置成員變量的@property屬性時,默認為atomic,提供多線程安全。

在多線程環境下,原子操作是必要的,否則有可能引起錯誤的結果。加了atomic,setter函數會變成下面這樣:

{lock}if (property != newValue) { [property release]; property = [newValue retain]; }{unlock}

nonatomic

禁止多線程,變量保護,提高性能。

atomic是Objc使用的一種線程保護技術,基本上來講,是防止在寫未完成的時候被另外一個線程讀取,造成數據錯誤。而這種機制是耗費系統資源的,所以在iPhone這種小型設備上,如果沒有使用多線程間的通訊編程,那么nonatomic是一個非常好的選擇。

assign

對基礎數據類型 (NSInteger,CGFloat)和C數據類型(int, float, double, char)等等。

此標記說明設置器直接進行賦值,這也是默認值。在使用垃圾收集的應用程序中,如果你要一個屬性使用assign,且這個類符合NSCopying協 議,你就要明確指出這個標記,而不是簡單地使用默認值,否則的話,你將得到一個編譯警告。這再次向編譯器說明你確實需要賦值,即使它是 可拷貝的。

retain

對其他NSObject和其子類對參數進行release舊值,再retain新值

指定retain會在賦值時喚醒傳入值的retain消息。此屬性只能用于Objective-C對象類型,而不能用于Core Foundation對象。(原因很明顯,retain會增加對象的引用計數,而基本數據類型或者Core Foundation對象都沒有引用計數——譯者注)。
注意: 把對象添加到數組中時,引用計數將增加對象的引用次數+1。

copy

對NSString 它指出,在賦值時使用傳入值的一份拷貝??截惞ぷ饔蒫opy方法執行,此屬性只對那些實行了NSCopying協議的對象類型有效。

copy與retain區別:

Copy其實是建立了一個相同的對象,而retain不是:

1.比如一個NSString 對象,地址為0×1111 ,內容為@”STR”,Copy 到另外一個NSString 之后,地址為0×2222 ,內容相同。

2.新的對象retain為1 ,舊有對象沒有變化retain 到另外一個NSString 之后,地址相同(建立一個指針,指針拷貝),內容當然相同,這個對象的retain值+1。

總結:retain 是指針拷貝,copy 是內容拷貝。

assign與retain:

1. 接觸過C,那么假設你用malloc分配了一塊內存,并且把它的地址賦值給了指針a,后來你希望指針b也共享這塊內存,于是你又把a賦值給(assign)了b。此時a和b指向同一塊內存,請問當a不再需要這塊內存,能否直接釋放它?答案是否定的,因為a并不知道b是否還在使用這塊內存,如果a釋放了,那么b在使用這塊內存的時候會引起程序crash掉。

2. 了解到1中assign的問題,那么如何解決?最簡單的一個方法就是使用引用計數(reference counting),還是上面的那個例子,我們給那塊內存設一個引用計數,當內存被分配并且賦值給a時,引用計數是1。當把a賦值給b時引用計數增加到2。這時如果a不再使用這塊內存,它只
需要把引用計數減1,表明自己不再擁有這塊內存。b不再使用這塊內存時也把引用計數減1。當引用計數變為0的時候,代表該內存不再被任何指針所引用,系統可以把它直接釋放掉。

const

變量修飾符,只有只讀權限,意思是這個參數只能讀,不能修改內容,誰近修飾誰。

用途: 1.便于測試快速找到問題

2如果是大型算法可以快速找到是哪個模塊出現錯誤

修飾位置:

register

//register int b = 0;

變量前面加register修飾,編譯器會優先將此變量放在寄存器中,這樣對這個變量進行的各種操作及運算,會很快,(適用于嵌入式編程)當然CPU周邊的用戶可用空閑寄存器是有限的,所以當定義多個register修飾的變量后,當可用寄存器已被占完,后面的變量即便用register修飾,也是不起作用的,依然是在普通內存中為變量開辟空間。

static

有時候我們非常希望,用一個小變量記錄某函數調用的次數,解決這個問題

方法1、可以使用全局變量;但是由于所有函數都可以修改它,對于較大程序出了問題不好調,所以使用全局變量并不好。

方法2、可以在目標函數中定義一個static變量(測試會發現這個變量的地址已經不再棧區,而是在數據區),每次進入函數讓其++,static作用在局部變量前,函數結束此變量的值不清空,即改變了此變量的生命期,而且直到整個程序結束,并且此變量的值只有在定義它的函數中才可以被使用和重新賦值

extern

extern int n;

extern可以擴展全局變量或函數的作用范圍,只有全局變量或函數才可以用extern擴展

extern與register的區別

extern可以用來擴展函數的作用范圍,可以跨文件擴展,前提是被擴展全局變量或者函數在定義時沒有被static修飾!

簡單來說,assign 修飾符用來修飾值類型和 id 類型(一般是 delegate)的屬性,需要注意的是如果 id 類型的屬性的修飾符用了 assign, 當你不再需要這個屬性時,你必須將 delegate 手動置空,防止野指針產生,這也是為什么 delegate 一般都用 weak 修飾的原因。

weak 和 strong 是 ARC 的產物,分別表示弱引用類型和強引用類型。在給 strong 修飾的屬性賦值時,會將屬性的指針指向新值的地址,同時持有這個新值(新值的引用計數被加1)。在給 weak 修飾的屬性賦值時,只是簡單地將屬性的指針指向新值的地址,不會持有新值。

retain 在 ARC 下基本等同于 strong。

copy 表示強引用,但是不會持有新值,而是拷貝一份引用計數為1的值給屬性。給這種修飾符修飾的屬性賦值時,實際上是把 新值調用 copy 方法后的返回值 賦給屬性。NSString 類型常常用 copy 修飾,就是防止修改某個對象后,對強引用這個對象的屬性造成不必要影響。

引用類型默認的修飾符是 strong.

值類型的默認修飾符是 assign.

以上就是武林技術頻道小編介紹的關于iOS 各種修飾符的區別匯總,如果你還沒有學習過這些知識,不妨參考下本文。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩av第一页| 国产v综合ⅴ日韩v欧美大片| 久久久亚洲福利精品午夜| 中文国产成人精品久久一| 亚洲一区二区三区乱码aⅴ蜜桃女| 欧美激情一区二区三区在线视频观看| 欧美午夜电影在线| 国产精品久久久久久亚洲调教| 欧美第一黄色网| 欧美另类69精品久久久久9999| 最近更新的2019中文字幕| 中文国产成人精品久久一| 午夜精品免费视频| 久久色免费在线视频| 精品自拍视频在线观看| 伊人青青综合网站| 国语自产偷拍精品视频偷| 插插插亚洲综合网| 亚洲欧美中文在线视频| 亚洲国产欧美一区二区丝袜黑人| 精品国产成人av| 国产精品对白刺激| 亚洲美女精品久久| 少妇高潮久久久久久潘金莲| 欧美精品久久久久久久| 久久久精品免费视频| 精品国偷自产在线视频| 亚洲激情免费观看| 国产97色在线|日韩| 欧美精品aaa| 成人啪啪免费看| 久久久精品免费视频| 日韩av大片免费看| 亚洲少妇中文在线| 永久免费毛片在线播放不卡| 精品国产乱码久久久久久天美| 91在线免费网站| 亚洲人午夜精品免费| 91精品国产91久久久久久吃药| 欧美理论电影在线播放| 精品国产区一区二区三区在线观看| 午夜精品久久久久久久白皮肤| 欧美理论电影网| 亚洲视频欧美视频| 亚洲日本成人网| 欧美日韩精品在线| 久久久久国产一区二区三区| 久久久天堂国产精品女人| 69久久夜色精品国产7777| 亚洲人成网站777色婷婷| 国产97在线视频| 亚洲另类欧美自拍| 亚洲精品aⅴ中文字幕乱码| 国产精品久久久| 欧美国产在线电影| 欧美最猛性xxxxx免费| 午夜精品一区二区三区视频免费看| 欧美美女操人视频| 91久久久亚洲精品| 日韩av在线电影网| 亚洲自拍小视频| 久久久亚洲欧洲日产国码aⅴ| 成人性生交大片免费看视频直播| 永久免费毛片在线播放不卡| 亚洲第一精品自拍| 国产精品日韩av| 成人免费网站在线看| 亚洲国产精品视频在线观看| 久久精品视频亚洲| 国产精品入口尤物| 最近2019年日本中文免费字幕| 日韩av黄色在线观看| 国产精品视频成人| 欧美国产极速在线| 国产精品1234| 78色国产精品| 日韩欧美成人精品| 国产69久久精品成人看| 蜜臀久久99精品久久久无需会员| 亚洲国产精品嫩草影院久久| 亚洲理论电影网| 亚洲伊人第一页| 亚洲三级黄色在线观看| 人体精品一二三区| 亚洲一区精品电影| 亚洲欧洲国产精品| 亚洲午夜激情免费视频| 久久久久九九九九| 欧美精品videosex牲欧美| 欧美亚洲在线视频| 亚洲aⅴ男人的天堂在线观看| 97在线视频观看| 午夜精品一区二区三区在线视| 亚洲免费中文字幕| 91中文精品字幕在线视频| 日韩av网站在线| 日韩美女在线看| 亚洲经典中文字幕| 久久久久久久久久久免费精品| 国产在线精品一区免费香蕉| 国产婷婷97碰碰久久人人蜜臀| 日韩h在线观看| 亚洲第一网站免费视频| 国产香蕉一区二区三区在线视频| 亚洲专区国产精品| 国产视频丨精品|在线观看| 在线播放日韩av| 国产成人短视频| 精品偷拍各种wc美女嘘嘘| 亚洲免费av电影| 亚洲最新av网址| 亚洲国产成人在线视频| 亚洲精品欧美日韩专区| 国产精品丝袜一区二区三区| 一本色道久久88精品综合| 日韩精品在线电影| 中文字幕日韩有码| 91亚洲精华国产精华| 欧美第一黄网免费网站| 日本亚洲欧美三级| 欧美极品美女视频网站在线观看免费| 国产91在线高潮白浆在线观看| 久久久91精品国产| 俺也去精品视频在线观看| 亚洲天天在线日亚洲洲精| 性色av一区二区三区免费| 欧美成人精品在线视频| 欧美在线视频免费| 欧美性极品xxxx做受| 国产狼人综合免费视频| 日韩欧美精品网站| 欧美黄色性视频| 亚洲成人性视频| 亚洲人成电影在线播放| 亚洲加勒比久久88色综合| 欧美色videos| 中文日韩在线视频| 狠狠色狠色综合曰曰| 91精品久久久久久| 中文字幕日韩专区| 国产91在线视频| 久久久国产一区二区| 中文字幕日韩综合av| 98精品国产自产在线观看| 欧美成人精品在线观看| 精品久久在线播放| 亚洲女人天堂视频| 欧美xxxx做受欧美.88| 亚洲韩国日本中文字幕| 国产精品成人av在线| 伊人精品在线观看| 国产日韩欧美一二三区| 北条麻妃久久精品| 亚洲欧美日韩直播| 欧美激情小视频| 91国产视频在线播放| 国产999精品久久久影片官网| 日韩视频永久免费观看| 日韩精品欧美激情| 日韩精品视频观看| 日韩成人在线视频观看| www.午夜精品| 国产91热爆ts人妖在线| 日韩精品在线影院|