OC 026 記憶體管理中迴圈引用的問題

2021-07-08 18:48:40 字數 1010 閱讀 7977

記憶體管理中有乙個迴圈引用的問題出現,雖然**看似沒有任何記憶體問題,但是由於互相引用,而造成了記憶體洩露。沒能正確的**記憶體。

所以解決的辦法是在乙個完成的迴圈體內其中乙個物件中,讓其不加入記憶體管理**,來破壞相互引用的問題。

在迴圈引用中,需要用到@class 來告訴編譯器有這個類,不要再用#import,防止迴圈匯入

#import //------main

#import "lsperson.h"

int main(int argc, const char * argv)

#import 

#import "lscar.h"

@inte***ce lsperson : nsobject

@property (nonatomic,retain) lscar *car; //車

@end

#import "lsperson.h"

@implementation lsperson

-(void)dealloc

@end

#import 

@class lsperson; //這裡的@class是為了防止迴圈匯入的問題,用來告訴編譯器有lsperson類

@inte***ce lscar : nsobject

//@property (nonatomic,retain) lsperson *person; 如果寫會迴圈引用,造成記憶體洩露

@property (nonatomic,assign) lsperson *person;// 必須在迴圈體內某個物件寫assign

@end

#import "lscar.h"

#import "lsperson.h"//這裡需要匯入標頭檔案

@implementation lscar

-(void)dealloc

@end

OC 記憶體管理 迴圈引用

儲存消耗空間 ram rom 記憶體模型 cg arc mrc 記憶體變數 堆 棧 靜態區 迴圈引用在block函式中經常發生舉個例子 建立兩個全域性變數 乙個為block 另乙個是str inte cenextviewcontroller property nonatomic,strong dis...

oc中的記憶體管理

通過copy獲取的物件是指標複製,其對應的retaincount會加1,即需要對其進行release。mutablecopy是內容複製,產生一塊新的位址存放,所以用 mutablecopy所產生的要分別使用不同的物件進行release 例如 nsmutablestring str str1 muta...

Swift 記憶體管理,迴圈引用

在執行時點選 如果有記憶體洩漏的問題,在左側列表會出現如下 然後點選出問題的會出現如下圖,乙個contact類的物件和乙個number類的物件迴圈引用 allocation 分配記憶體 initialization 初始化 使用deinitialization deallocation 記憶體 可以...