我的应用程序中的一个屏幕具有高分辨率背景,在旧设备上加载可能只需要太长时间。
我的解决方案是预先加载委托中的图像,然后重复使用它。
因此,我的代表中有一个属性:
@property (nonatomic, strong, retain) UIColor *fabricColor;
我在didFinishLaunching中加载图片:
fabricColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"bg.png"]];
但是,当我尝试在导航控制器中引用delegate.fabricColor时,它是一个僵尸:
AppDelegate *dg = (AppDelegate *)[[UIApplication sharedApplication] delegate];
self.view.backgroundColor = dg.fabricColor; //Doesn't work
如何防止这种情况发生,以便我可以使用fabricColor?
一些注意事项:
答案 0 :(得分:2)
在为ivar设置值时使用属性以保留:
self.fabricColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"bg.png"]];
在您的代码中,您只需将自动释放的值分配给您的实例变量而不保留它 - 因此在您尝试使用它之前的某个时间它会被解除分配