0
我在monomac中綁定了一個Cocoa類。如果我在該類的實例上調用Dispose()
,它是否總是在非託管端調用dealloc
?Xamarin中的Dispose和dealloc語義
當託管類爲Dispose()
ed時,dealloc
可能不會被調用的原因是什麼?
我在monomac中綁定了一個Cocoa類。如果我在該類的實例上調用Dispose()
,它是否總是在非託管端調用dealloc
?Xamarin中的Dispose和dealloc語義
當託管類爲Dispose()
ed時,dealloc
可能不會被調用的原因是什麼?
Dispose
將在本機對象上調用release
而不是dealloc
(但如果沒有其他人保留它,它可能會取消分配對象)。
請注意,多次撥打Dispose
只會撥打release
一次。
更新
這被證明是在的MonoMac/Xamarin.Mac一個bug(現已被固定)。
是什麼導致對象在託管代碼中發送'retain'?簡單地參考它? – TheNextman
每當爲Objective-C對象創建託管包裝器時,都會調用retain。然後''釋放'將在被管理對象被銷燬時被調用(或者你手動調用'Dispose')。 –
我已經提出了與此行爲有關的錯誤15405 ... Rolf,你有機會看看並讓我知道如果我做錯了什麼? https://bugzilla.xamarin.com/show_bug.cgi?id=15405 – TheNextman