解決ARC的迴圈引用問題

2021-09-08 23:04:54 字數 784 閱讀 1523

看看下面的程式有什麼問題:

bnritem.h

@inte***ce

bnritem : nsobject

@property (nonatomic, strong) bnritem *containeditem;

@property (nonatomic, strong) bnritem *container;

...@end

bnritem.m

#import

"bnritem.h

"@implementation

bnritem

...- (void)setcontaineditem:(bnritem *)containeditem

@end

main.m

int main(int argc, const

char *ar**)

//destroy the mutable array object

nslog(@"

setting items to nil...");

items =nil;

}return0;

}

上面的程式是有問題的,會導致迴圈引用(strong reference cycle)。

導致記憶體洩露。

解決方案:

將某個指標的特性設定為弱引用

@property (nonatomic,weak) bnritem *container;

ARC之解決物件之間的迴圈強引用(Swift)

直接上 具體看 中的注釋 viewcontroller.swift refrence created by mac on 8 24 15.import uikit class viewcontroller uiviewcontroller else 1.人和公寓的關係都是可選的,這裡用 weak 就...

NSProxy解決迴圈引用問題

最近在使用nstimer 新增到runloop時 發現引用timer的view和controller無法正常釋放,即不會呼叫view或者controller的 dealloc 方法。這是因為timer在新增target時,timer持有target,而target本身又持有timer,導致迴圈引用。...

vue 解決迴圈引用元件報錯的問題

最近在做專案的時候遇到使用迴圈元件,因為模式一樣,只有資料不一樣。按照普通元件呼叫格式來做的時候總是報錯,錯誤資訊為 vue warn unknown custom element did you register the component correctly?for recursive comp...