ios 記憶體管理的理解(四)ARC下迴圈引用問題

2021-09-11 05:26:36 字數 818 閱讀 7103

案例 乙個人擁有乙隻狗,乙隻狗擁有乙個主人。

@inte***ce person :nsobject

@property(nonatomic,strong) dog* dog;

@end

@inte***ce dog :nsobject

@property(nonatomic,strong) person* person;

@end

person *p=[person new];

dog * d=[dog new];

d.person=p;

p.dog = d;

上述**塊會行成迴圈引用問題

解決方法:一端用strong,一端用weak。

@inte***ce person :nsobject

@property(nonatomic,strong) dog* dog;

@end

@inte***ce dog :nsobject

@property(nonatomic,weak) person* person;

@end

arc中的@property引數

strong : 用於oc物件, 相當於mrc中的retain

weak : 用於oc物件, 相當於mrc中的assign

assign : 用於基本資料型別, 跟mrc中的assign一樣

copy : 一般用於nsstring, 跟mrc中的copy一樣

iOS記憶體管理 ARC

arc是在編譯的時候插入 來確信讓物件能夠按需要來存在。arc同樣是以引用計數為基礎。你可以選擇在以檔案或者專案為單位不使用arc。但是建議盡量最好使用arc,首先,編譯器為你做記憶體管理往往比你自己要更優秀,其次,arc導致的效率損失在ui面前基本可以忽略不計。arc有以下強制規則 1.你不能顯示...

ARC下的記憶體管理

本文討論一下arc automatic referencing count 下的記憶體管理問題 例項變數是類的私有成員變數,無法被外部訪問,並且子類無法繼承。屬性以 property修飾,是封裝了getter setter方法的 成員變數 可以被外部訪問和被繼承。宣告屬性後,系統會生成乙個名為 pr...

ARC 記憶體管理解惑

自動引用計數 arc 是乙個編譯器特性,它提供了自動的objective c物件的記憶體管理。arc是通過在編譯時新增 來確保oc物件只在需要的時候存在。從概念上講,它新增適當的記憶體管理呼叫,並且遵循手動引用計數的記憶體管理規範。因此,在使用arc時,不用關心什麼時候使用retain,releas...