如果兩個類迴圈引用 都使用了@perperty(nonatomic ,retain)將會在釋放物件的時候出現問題如;
person.h
@property(donation, retain) dog*dog;
dog.h
@property(donation,retain)person*person;
main.m
dog*d = [dog new];
person *p = [person new];
d.person = p;
p.dog = d;
[d release];
[p release];
這樣的程式p和d都沒有釋放掉
解決方法
如dog物件用了@property(donation, retain) person*person; 那麼person物件@property(donation, retain) dog*dog; 改為person物件@property(donation,assign) dog*dog;
如person物件用了@property(donation, retain) dog*dog; 那麼person物件@property(donation, retain) person*person;改為person物件@property(donation, assign) dog*dog;
為了避免mrc下物件迴圈引用無法釋放的問題 在@property的時候,不可以兩個物件同時使用,應乙個使用retain,另乙個使用assign。
迴圈retain導致記憶體洩露
dog.h import class person inte ce dog nsobject property nonatomic,retain person owner end person.h import class dog inte ce person nsobject property n...
幾個屬性修飾的問題retain 和 copy
如果說retain只是乙個指標copy 而 copy是乙個指標和內容都copy的畫。那如下例子怎麼會不成立?如下 import viewcontroller.h inte ce viewcontroller property nonatomic,copy nsstring namecopy prop...
幾個屬性修飾的問題retain 和 copy
如果說retain只是乙個指標copy 而 copy是乙個指標和內容都copy的畫。那如下例子怎麼會不成立?如下 import viewcontroller.h inte ce viewcontroller property nonatomic,copy nsstring namecopy prop...