激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

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

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

香港云服务器
服務(wù)器之家 - 編程語言 - IOS - iOS 對象屬性詳細(xì)介紹

iOS 對象屬性詳細(xì)介紹

2021-02-07 18:53iOS開發(fā)網(wǎng) IOS

這篇文章主要介紹了iOS 對象屬性詳細(xì)介紹的相關(guān)資料,這里整理了IOS 對象的相關(guān)資料,需要的朋友可以參考下

iOS 對象屬性

oc對象的一些屬性:

retain,strong, copy,weak,assign,readonly, readwrite, unsafe_unretained

下面來分別講講各自的作用和區(qū)別:

retain,計數(shù)器加1, (增加一個指向內(nèi)存的指針) 對應(yīng)release(計數(shù)器-1) setter 方法對參數(shù)進(jìn)行 release 舊值再 retain 新值,所有實現(xiàn)都是這個順序

?
1
2
3
4
5
6
7
8
9
10
11
- (void)setBackView:(UIView *)backView {
 
  if (_backView != backView) {
 
    [_backView release];
 
    _backView = [backView retain];
  }
 
  return _backView;
}

copy, 拷貝,新開地址,內(nèi)容拷貝, setter 方法進(jìn)行 Copy 操作,與 retain 處理流程一樣,先舊值 release ,再 Copy 出新的對象, retainCount 為 1 。這是為了減少對上下文的依賴而引入的機制。

(提一點深拷貝shallow copy,淺拷貝deep copy)

這篇文章比較直觀(http://blog.csdn.net/omegayy/article/details/7311839)

官方文檔(https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Collections/Articles/Copying.html)

copy和mutableCopy調(diào)用后表現(xiàn)的行為到底是什么樣完成取決于類本身NSCopying和NSMutableCopying協(xié)議是如何實現(xiàn)的。

 strong, 強引用,計數(shù)器加1,和retain一樣(對應(yīng)retain和copy)

weak,弱引用

?
1
2
3
4
5
6
7
8
9
10
strong 用來修飾強引用的屬性;
 
@property (strong) SomeClass * aObject;
對應(yīng)原來的
@property (retain) SomeClass * aObject; 和 @property (copy) SomeClass * aObject;
 
weak 用來修飾弱引用的屬性;
@property (weak) SomeClass * aObject;
對應(yīng)原來的
@property (assign) SomeClass * aObject;

__weak, __strong 用來修飾變量,此外還有 __unsafe_unretained, __autoreleasing 都是用來修飾變量的。
__strong 是缺省的關(guān)鍵詞。
__weak 聲明了一個可以自動 nil 化的弱引用。
__unsafe_unretained 聲明一個弱應(yīng)用,但是不會自動nil化,也就是說,如果所指向的內(nèi)存區(qū)域被釋放了,這個指針就是一個野指針了。
__autoreleasing 用來修飾一個函數(shù)的參數(shù),這個參數(shù)會在函數(shù)返回的時候被自動釋放。

strong和weak的區(qū)別

(weak和strong)不同的是 當(dāng)一個對象不再有strong類型的指針指向它的時候 它會被釋放  ,即使還有weak型指針指向它。

一旦最后一個strong型指針離去 ,這個對象將被釋放,所有剩余的weak型指針都將被清除。

可能有個例子形容是妥當(dāng)?shù)摹?/p>

想象我們的對象是一條狗,狗想要跑掉(被釋放)。

strong型指針就像是栓住的狗。只要你用牽繩掛住狗,狗就不會跑掉。如果有5個人牽著一條狗(5個strong型指針指向1個對象),除非5個牽繩都脫落 ,否著狗是不會跑掉的。

weak型指針就像是一個小孩指著狗喊到:“看!一只狗在那” 只要狗一直被栓著,小孩就能看到狗,(weak指針)會一直指向它。只要狗的牽繩脫落,狗就會跑掉,不管有多少小孩在看著它。

只要最后一個strong型指針不再指向?qū)ο?,那么對象就會被釋放,同時所有的weak型指針都將會被清除。

assign,用于簡單類型,計數(shù)器不加,直接賦值,一個指針,一塊地址, setter 方法直接賦值,不進(jìn)行任何 retain 操作,為了解決原類型與環(huán)循引用問題

readonly,只讀,只生成get方法,沒有set方法

readwrite,默認(rèn),可讀寫,set,get方法都會生成

unsafe_unretained,類似weak,所謂的unSafe就是指會容易出現(xiàn)也指針的情況,慎用

setter = xxxx,聲明對象的set方法

getter = xxxx, 聲明對象的get方法

nonatomic,非原子操作,系統(tǒng)不添加代碼,運行速度相對快,但數(shù)據(jù)操作在多線程情況下相對不安全

atomic,原子操作,編譯時會增加很多加鎖解鎖代碼,數(shù)據(jù)操作在多線程情況下相對安全

* 使用assign: 對基礎(chǔ)數(shù)據(jù)類型 (NSInteger)和C數(shù)據(jù)類型(int, float, double, char,等)
* 使用copy: 對NSString
* 使用retain: 對其他NSObject和其子類

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

延伸 · 閱讀

精彩推薦
973
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25
主站蜘蛛池模板: 一区二区久久精品66国产精品 | 极品xxxx欧美一区二区 | 一分钟免费观看完整版电影 | 亚洲第一视频在线 | 黑人一区二区 | 999视频网 | av电影网站在线观看 | 爱唯侦察 国产合集 亚洲 | 久久99精品国产99久久6男男 | av成人免费在线观看 | 91精品国产乱码久 | 成人 在线| 欧美成人一区免费视频 | 91超视频| 国产精品1区 | jizzjizz中国少妇中文 | 中文字幕精品在线播放 | 黄色高清av | 成人在线观看一区二区三区 | 一级做a在线观看 | 国产一区二区不卡视频 | 一级黄色毛片播放 | 奇米影视亚洲春色 | 亚洲 91 | 成人毛毛片 | 欧美性生活久久 | 日本一区二区在线 | 国产美女一区二区在线观看 | 日韩欧美高清一区 | 国产一级大片 | 在线播放免费人成毛片乱码 | 黄色大片大毛片 | 国产午夜电影在线观看 | chinese-xvideos| 亚洲第一成人久久网站 | 91,视频免费看 | 国产精品视频一区二区三区四区国 | 免费毛片观看 | 麻豆蜜桃在线观看 | 一级在线观看视频 | 精品久久久久久久久久久久久 |