2009-02-10 15 views
1

我有一个UIView子类,它在调用-drawRect:时自己绘制。它只需要一些时间,但是在极端情况下,例如在去往另一个视图控制器时实例的内存不足和删除,绘制函数在对象被释放之前没有完成。当代码仍在运行时释放对象时,是否有避免错误的方法?

我该如何处理这个问题?解除分配导致任何对[self ...]的调用都会抛出一个EXC_BAD_ACCESS,绘图函数将确定如何绘制自己。

注:

我主要使用的框架来处理内存管理。问题在于UIView使用的来自CATiledLayer的-drawRect:的异步调用,它在UIView发布之前提供。但是,由于它是异步的,-didReceiveMemoryWarning在绘图时运行,导致视图在绘图中间释放。

+0

注:我已经包裹在一个通用的try-catch块(NSException *),但EXC_BAD_ACCESS,显然也不例外。 – 2009-02-10 18:55:12

回答

1

我认为这里的答案是:使用@synchronized

1

开始阅读苹果的内存管理规则:

Cocoa Memory Management Rules

底线:通往“交易”这个问题是确保你管理的对象和它们的内存使用正常。由于释放而导致的崩溃不是被困的事情,而是需要修复的应用程序中的扁平化错误。

+0

我没有办法解决它。我已经阅读了文档,我主要使用框架来处理内存管理。问题在于在对象释放后进入的CATiledLayer对drawRect的异步调用。 – 2009-02-10 20:11:52

相关问题