我的应用程序中的屏幕之一具有高分辨率背景,可能需要一点时间才能加载到较旧的设备上。

我的解决方案是在委托中预加载图像,然后重新使用它。

因此,我的代表中有一个属性:

@property (nonatomic, strong, retain) UIColor *fabricColor;


然后将图像加载到didFinishLaunching中:

fabricColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"bg.png"]];


但是,当我尝试在导航控制器中引用proxy.fabricColor时,它是一个僵尸:

AppDelegate *dg = (AppDelegate *)[[UIApplication sharedApplication] delegate];
self.view.backgroundColor = dg.fabricColor; //Doesn't work


如何防止这种情况发生,以便可以使用fabricColor?

一些注意事项:


我没有使用ARC。
我的代表的dealloc的第一行是“ [fabricColor版本]”

最佳答案

在将值设置为ivar时保留属性时使用:

self.fabricColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"bg.png"]];


在您的代码中,您只需将自动释放的值分配给您的实例变量而不保留它-因此,在稍后尝试使用它之前,需要将其释放。

关于objective-c - 背景UIImage成为僵尸委托(delegate),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10533753/

10-11 17:14