3-
迴圈的retain
問題人有寵物:狗
狗有主人:人
那麼使用在使用兩個類時,再用
#import相互匯入
就會有問題
,需要使用
@class
但是當兩個類都要引用對方的物件進入自己的類做屬性時,記憶體洩露的另一種情況。解決辦法
, 其中乙個先釋放
(但是還有殭屍物件的問題
)另乙個解決辦法是乙個用
retain,
乙個用
assign. 在person.h中,定義dog型別的 屬性時用retain .在 dog.h中,定義owner時 用asiign,就可以解決。
看我們看乙個狗和人迴圈引用的例子:
// main.m
// 08-迴圈引用
////
//#import #import "person.h"
#import "dog.h"
int main(int argc, const char * argv)
return 0;
}
persn.h檔案():
// person.h
//
////
//#import @class dog;
@inte***ce person : nsobject
@property (nonatomic, retain) dog *dog;
@end
person.m 檔案:
// person.m
//
////
//#import "person.h"
@implementation person
- (void)dealloc
@end
dog.h
////#import @class person;
@inte***ce dog : nsobject
@property (nonatomic, assign) person *owner; // owner 所有者
@end
dog.m
////#import "dog.h"
@implementation dog
- (void)dealloc
@end
迴圈引用問題
main.m 07 迴圈引用 created by kevin on 13 8 9.1.class的作用 僅僅告訴編譯器,某個名稱是乙個類 class person 僅僅告訴編譯器,person是乙個類 2.開發中引用乙個類的規範 1 在.h檔案中用 class來宣告類 2 在.m檔案中用 impo...
迴圈引用問題
迴圈引用的問題這樣理解 比如在main函式中建立了兩個類的物件a和b,現在引用計數都是1。現在讓a和b互相引用 a有乙個屬性是b物件,屬性說明是retain b有乙個屬性是a物件,屬性說明是retain 現在兩個物件的引用計數都增加了1,都變成了2。現在執行 a release b release ...
ios block迴圈引用問題
ios開發中,開了arc模式,系統自動管理記憶體,如果程式中用到了block就要注意迴圈引用帶來的記憶體洩露問題了 這幾天遇到乙個問題,正常頁面dismiss的時候是要呼叫dealloc方法的,但是我的程式就是不呼叫,研究了好久終於找到了問題出在 了 起初的 如下 void getmyrelated...