rust迴圈引用問題

2021-09-19 07:30:46 字數 861 閱讀 2492

迴圈引用的時候需要使用weak,弱引用,一般把上級作為弱引用加到下級裡

trait sprite 

struct ball

impl sprite for ball

fn update

(&self)

}struct paddle

impl sprite for paddle

fn update

(&self)

}

下級引用上級時普通的引用就ok了,要修改的就用refcell,不用修改的就使用rc

struct game 

impl game

}}

下面是呼叫的方式

fn main()

);let paddle = rc:

:new

( paddle );

let mut game = rc:

:new

( game );

*ball.game.

borrow_mut()

= rc:

:downgrade

(&game)

;*paddle.game.

borrow_mut()

= rc:

:downgrade

(&game)

; ball.

update()

;println!(

"{}"

,game.score.

borrow()

);}

迴圈引用問題

main.m 07 迴圈引用 created by kevin on 13 8 9.1.class的作用 僅僅告訴編譯器,某個名稱是乙個類 class person 僅僅告訴編譯器,person是乙個類 2.開發中引用乙個類的規範 1 在.h檔案中用 class來宣告類 2 在.m檔案中用 impo...

迴圈引用問題

3 迴圈的retain 問題人有寵物 狗 狗有主人 人 那麼使用在使用兩個類時,再用 import相互匯入 就會有問題 需要使用 class 但是當兩個類都要引用對方的物件進入自己的類做屬性時,記憶體洩露的另一種情況。解決辦法 其中乙個先釋放 但是還有殭屍物件的問題 另乙個解決辦法是乙個用 reta...

迴圈引用問題

迴圈引用的問題這樣理解 比如在main函式中建立了兩個類的物件a和b,現在引用計數都是1。現在讓a和b互相引用 a有乙個屬性是b物件,屬性說明是retain b有乙個屬性是a物件,屬性說明是retain 現在兩個物件的引用計數都增加了1,都變成了2。現在執行 a release b release ...