迴圈引用問題

2021-07-04 16:37:08 字數 1245 閱讀 8947

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...