在
mrc中我們經常遇到迴圈
retain
問題導致記憶體洩露。
dog類
#import
@class
person;
@inte***ce
dog :
nsobject
@property
(nonatomic
,retain
) person
*owner;
//dog
類中有乙個
peson
型別的主人 -(
void
)run;
@end
@implementation
dog
-(void
)dealloc
-(void
)run
**********************
分割線***********************
person類
#import
@class
dog;
@inte***ce
person :
nsobject
@property
(nonatomic
,retain
) dog
* dog;
//而在
person
型別中有個
dog型別的狗 -(
void
)liudog;
@end
@implementation
person -(
void
)liudog
-(void
)dealloc
@end
執行完並沒有像我們想象的那樣呼叫
dealloc
方法,顯然不管是do
g類還是
person
類都沒有被釋放。
在arc
中同樣存在這種問題
@class
dog;
#import
@inte***ce
person :
nsobject -(
void
)liudog;
@property
(nonatomic
,strong
) dog
*dog;
@end
#import
"dog.h"
@implementation
dog
-(void
)run
-(void
)dealloc
@end
person類
@class
person;
#import
@inte***ce
dog :
nsobject -(
void
)run;
@property
(nonatomic
,strong
)person
*owner;
@end
@implementation
person -(
void
)liudog
-(void
)dealloc
@end
//當你用強指標分別指向狗和人的時候
intmain(
intargc,
const
char
* argv)
return0;
OC 026 記憶體管理中迴圈引用的問題
記憶體管理中有乙個迴圈引用的問題出現,雖然 看似沒有任何記憶體問題,但是由於互相引用,而造成了記憶體洩露。沒能正確的 記憶體。所以解決的辦法是在乙個完成的迴圈體內其中乙個物件中,讓其不加入記憶體管理 來破壞相互引用的問題。在迴圈引用中,需要用到 class 來告訴編譯器有這個類,不要再用 impor...
OC 記憶體管理 迴圈引用
儲存消耗空間 ram rom 記憶體模型 cg arc mrc 記憶體變數 堆 棧 靜態區 迴圈引用在block函式中經常發生舉個例子 建立兩個全域性變數 乙個為block 另乙個是str inte cenextviewcontroller property nonatomic,strong dis...
Day12 oc迴圈引用
開發中引用乙個類的規範 1 在.h中用 class來宣告類 2 在.m中用 import來包含所有類的東西 person.h class card 在標頭檔案中僅僅 class,用在標頭檔案中宣告乙個類,相比較import不是全部匯入 inte ce person nsobject property...