亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

iOS 對象屬性詳細介紹

 更新時間:2016年11月07日 11:49:32   投稿:lqh  
這篇文章主要介紹了iOS 對象屬性詳細介紹的相關(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ù)進行 release 舊值再 retain 新值,所有實現(xiàn)都是這個順序

- (void)setBackView:(UIView *)backView {

  if (_backView != backView) {

    [_backView release];

    _backView = [backView retain];
  }

  return _backView;
}

copy, 拷貝,新開地址,內(nèi)容拷貝, setter 方法進行 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,弱引用

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)不同的是 當一個對象不再有strong類型的指針指向它的時候 它會被釋放  ,即使還有weak型指針指向它。

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

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

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

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

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

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

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

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

readwrite,默認,可讀寫,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和其子類

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

相關(guān)文章

  • iOS 四種回調(diào)方法總結(jié)

    iOS 四種回調(diào)方法總結(jié)

    這篇文章主要介紹了iOS 四種回調(diào)方法總結(jié)的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • 簡單談?wù)刢/c++中#import、#include和@class的區(qū)別

    簡單談?wù)刢/c++中#import、#include和@class的區(qū)別

    對于#import,我想做過iOS開發(fā)的人應(yīng)該都不陌生。在開發(fā)過程中,當我們需要聲明某一個類時,都需要去引用。而#imclude的話,在我們學(xué)習C時就已經(jīng)知道了,他的作用也是引用聲明的意思。在表面上他們的作用似乎都是一樣的。但是在具體功能實現(xiàn)方式上,還是有著很大的區(qū)別。
    2018-01-01
  • iOS實現(xiàn)圓環(huán)比例圖

    iOS實現(xiàn)圓環(huán)比例圖

    這篇文章主要為大家詳細介紹了iOS實現(xiàn)圓環(huán)比例圖,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • ios設(shè)計模式--委托模式

    ios設(shè)計模式--委托模式

    這篇文章主要介紹了ios設(shè)計模式中的委托模式,希望對大家學(xué)習ios框架有所幫助,下面讓我們一起來了解一下吧
    2023-03-03
  • iOS11 下載之斷點續(xù)傳的bug的解決方法

    iOS11 下載之斷點續(xù)傳的bug的解決方法

    本篇文章主要介紹了iOS11 下載之斷點續(xù)傳的bug的解決方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • iOS關(guān)閉虛擬鍵盤方法匯總

    iOS關(guān)閉虛擬鍵盤方法匯總

    在iOS應(yīng)用開發(fā)中,有三類視圖對象會打開虛擬鍵盤,進行輸入操作,但如何關(guān)閉虛擬鍵盤,卻沒有提供自動化的方法
    2016-04-04
  • iOS App開發(fā)中導(dǎo)航欄的創(chuàng)建及基本屬性設(shè)置教程

    iOS App開發(fā)中導(dǎo)航欄的創(chuàng)建及基本屬性設(shè)置教程

    這篇文章主要介紹了iOS App開發(fā)中導(dǎo)航欄的創(chuàng)建及基本屬性設(shè)置教程,即用UINavigationController來編寫navigation,示例代碼為Objective-C語言,需要的朋友可以參考下
    2016-02-02
  • iOS 底層alloc init new 源碼流程示例分析

    iOS 底層alloc init new 源碼流程示例分析

    這篇文章主要為大家介紹了iOS 底層alloc init new 源碼流程示例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • 講解iOS開發(fā)中對音效和音樂播放的簡單實現(xiàn)

    講解iOS開發(fā)中對音效和音樂播放的簡單實現(xiàn)

    這篇文章主要介紹了iOS開發(fā)中對音效和音樂播放的簡單實現(xiàn),代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下
    2015-11-11
  • iOS沙盒視頻縮略圖及保存本地代碼

    iOS沙盒視頻縮略圖及保存本地代碼

    這篇文章主要為大家詳細介紹了iOS沙盒視頻縮略圖及保存本地的代碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06

最新評論