OC中的內存管理retain總結-創(chuàng)新互聯(lián)

在OC中,內存管理采用"引用計數(shù)"的機制。這種機制的好處在于:如果有一個對象同時被多個指針指向時,這些指針都對這個對象擁有所有權。如果一個指針放棄所有權時不會將該內存銷毀,以避免出現(xiàn)野指針問題。

成都網(wǎng)絡公司-成都網(wǎng)站建設公司成都創(chuàng)新互聯(lián)公司十多年經(jīng)驗成就非凡,專業(yè)從事做網(wǎng)站、網(wǎng)站制作,成都網(wǎng)頁設計,成都網(wǎng)頁制作,軟文平臺,廣告投放平臺等。十多年來已成功提供全面的成都網(wǎng)站建設方案,打造行業(yè)特色的成都網(wǎng)站建設案例,建站熱線:18982081108,我們期待您的來電!

  那么這種機制是如何實現(xiàn)的呢?這里需要幾個關鍵字:

1. retain 是引用計數(shù)+1

2. copy  復制一個原對象, 引用計數(shù)為 1, 原對象釋放

3. assign  直接賦值.

4. dealloc 當引用計數(shù)為0 時, 由系統(tǒng)調用, 回收空間

  我們都知道,在定義一個類時,我們需要聲明屬性,系統(tǒng)會根據(jù)我們聲明的屬性自動生成setter和getter方法。但系統(tǒng)默認聲明的setter方法是直接賦值的(assign), 這樣我們在將對象賦值給成員變量時,就會出現(xiàn)上面所說的問題。為避免這種問題,方便地管理內存,我們需要在聲明屬性是加上關鍵字retain。這樣,我們再將對象賦值給成員變量時,會使其retaincount+1。

@interface Monitor : NSObject {//顯示器類
    NSInteger _size;//尺寸
    NSString *_type;//屏幕的類型
    float _price;//價錢
}
@property(nonatomic, retain) NSString *type;
@end
@implementation Monitor
- (void)setType:(NSString *)type
{
    if (_type != type) {
        [_type release];
        _type = [type retain];
    }
}
@end

  比如,在type屬性聲明時加上 retain,它的setter方法如上。

  如果聲明時加了retain屬性,釋放時dealloc方法需要重寫,代碼如下:

- (void)dealloc
{
    [_type release];
    [super dealloc];
}

管理內存是需要牢記黃金法則,凡是用alloc, retain, copy關鍵字時,都要對應使用release或autorelease。

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

分享文章:OC中的內存管理retain總結-創(chuàng)新互聯(lián)
轉載源于:http://muchs.cn/article22/idgcc.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供面包屑導航品牌網(wǎng)站設計、關鍵詞優(yōu)化網(wǎng)頁設計公司、網(wǎng)站維護電子商務

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

h5響應式網(wǎng)站建設