什么是单调相当于dealloc?

Chr*_*ken 6 c# iphone objective-c xamarin.ios

我正在寻找一个在objective-c中包含此代码的在线示例

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

    [activeController release];
    [super dealloc];
}
Run Code Online (Sandbox Code Playgroud)

我假设MT等价物将是Dispose,我是否正确?

我不需要打电话给:

    [activeController release];
    [super dealloc];
Run Code Online (Sandbox Code Playgroud)

方法,因为他们将收集在Monotouch上的垃圾,这也是正确的吗?

mig*_*aza 14

MonoTouch是垃圾收集的,因此您无需担心自己进行解除分配.

话虽这么说,有些时候你意识到你在内存中保留了一些大的资源,你想通过立即处理资源而不是等待垃圾收集器启动来协助系统.

这是当调用Dispose派上用场时:它释放垃圾收集器之前关联的资源.这对于大型对象(如图像)尤为重要,因为图像存储在非托管堆上,而对象引用则存储在托管堆中.

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

所以当你可以通过调用dispose来协助系统时就是这样:你知道无辜的"myImage"变量实际上指的是一大块内存.