首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

Objective-C 參考計數與物件所有權核心觀念詳解

     編輯:關於C語言

Cocoa 記憶體管理機制:參考計數

在 Cocoa 框架中,記憶體管理透過「參考計數」(Reference Counting,亦稱「保留計數」)機制來實現。每個物件都擁有一個整數計數器,表示目前有多少「擁有者」正在使用該物件。計數器的運作規則如下:

  • 物件建立時(alloc、new、copy、mutableCopy),計數器初始值為 1。
  • 呼叫 retain 訊息,計數器加 1。
  • 呼叫 release 訊息,計數器減 1。
  • 當計數器歸零時,系統自動呼叫 dealloc 方法銷毀物件,釋放記憶體。

實作範例:觀察參考計數變化

以下透過一個 Person 類別示範 retain/release 對計數器的影響。

1. 定義 Person 類別並覆寫 dealloc

#import "Person.h"

@implementation Person
- (void)dealloc {
    NSLog(@"person dead");
    [super dealloc];
}
@end

2. 主程式模擬參考計數操作

#import <Foundation/Foundation.h>
#import "Person.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        Person *tom = [[Person alloc] init];
        NSLog(@"tom retainCount: %ld", [tom retainCount]); // 1

        [tom retain];
        NSLog(@"tom retainCount: %ld", [tom retainCount]); // 2

        [tom release];
        NSLog(@"tom retainCount: %ld", [tom retainCount]); // 1

        [tom release]; // 計數歸零,觸發 dealloc
    }
    return 0;
}

參考計數示意圖 執行結果截圖

透過此機制,開發者能精確掌控物件生命週期,避免記憶體洩漏與過早釋放。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved