我的应用程序中的屏幕之一具有高分辨率背景,可能需要一点时间才能加载到较旧的设备上。
我的解决方案是在委托中预加载图像,然后重新使用它。
因此,我的代表中有一个属性:
@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/