gpt4 book ai didi

c# - 什么是 dealloc 的 Monotouch 等价物?

转载 作者:太空狗 更新时间:2023-10-30 03:40:10 26 4
gpt4 key购买 nike

我正在看一个包含 objective-c 代码的在线示例

    -(void)dealloc {
[activeController viewWillDisappear:NO];
[activeController.view removeFromSuperview];
[activeController viewDidDisappear:NO];

[activeController release];
[super dealloc];
}

我认为 MT 的等价物是 Dispose,对吗?

我不需要调用:

    [activeController release];
[super dealloc];

在 Monotouch 上会被垃圾收集的方法,这也正确吗?

最佳答案

MonoTouch 是垃圾收集器,因此您无需担心自己进行重新分配。

话虽这么说,但有时您会意识到自己在内存中保留了一些大资源,并且希望通过立即处理资源来协助系统,而不是等待垃圾收集器启动。

这时调用 Dispose 就派上用场了:它在垃圾收集器必须释放之前释放关联的资源。这对于图像等大型对象尤为重要,因为图像存储在非托管堆中,而对象引用存储在托管堆中。

这意味着如果您有一个 8 兆字节的图像:8 兆字节存储在非托管堆(由 Objective-C 管理)中,1 个指针(4 字节)存储在托管堆中。就 Mono 的垃圾收集器而言,您使用的是 4 个字节,而不是 8 兆字节。

所以在这种情况下,您可以通过调用 dispose 来协助系统:您知道看似无辜的“myImage”变量实际上指向一大块内存。

关于c# - 什么是 dealloc 的 Monotouch 等价物?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4025143/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com