背景UIImage成为Zombie代表

时间:2012-05-10 12:14:48

标签: objective-c ios memory-management uinavigationcontroller uicolor

我的应用程序中的一个屏幕具有高分辨率背景,在旧设备上加载可能只需要太长时间。

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

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

@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?

一些注意事项:

  • 使用ARC。
  • 我委托的dealloc中的第一行是“[fabricColor release]”

1 个答案:

答案 0 :(得分:2)

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

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

在您的代码中,您只需将自动释放的值分配给您的实例变量而不保留它 - 因此在您尝试使用它之前的某个时间它会被解除分配