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"变量实际上指的是一大块内存.