2013-10-11 2 views
0

나는 모노맥에서 바인딩 된 코코아 클래스가 있습니다. 해당 클래스의 인스턴스에서 Dispose()을 호출하면 관리되지 않는 쪽에서 항상 dealloc이 호출되어야합니까?Xamarin에서 의미를 삭제하고 dealloc

관리되는 클래스가 Dispose() 일 때 dealloc이 호출되지 않는 이유는 무엇입니까?

답변

3

Disposedealloc이 아니라 네이티브 개체에서 release을 호출합니다 (단, 다른 사람이 그것을 보유하지 않은 경우 개체 할당이 끝날 수 있음).

Dispose을 여러 번 호출하면 release 번만 호출됩니다.

업데이트

이 (현재 수정되었습니다) MonoMac/Xamarin.Mac에서 bug 밝혀졌다.

+0

개체가 관리되는 코드에서 '보존'되는 이유는 무엇입니까? 간단히 그것에 대한 참조를 복용? – TheNextman

+1

Objective-C 객체에 대해 관리되는 래퍼가 생성 될 때마다 'retain'이 호출됩니다. 그런 다음'release'는 관리 객체가 파괴 될 때 (또는 수동으로'Dispose'를 호출 할 때) 호출됩니다. –

+0

나는이 행동과 관련하여 15405 버그를 제기했습니다 ... 롤프, 내가 틀린 일을하고 있는지 알 수있는 기회가 있습니까? https://bugzilla.xamarin.com/show_bug.cgi?id=15405 – TheNextman