0
我的應用程序中的一個屏幕具有高分辨率背景,只需花費太多時間就可以加載較舊的設備。背景UIImage成爲殭屍代表
我的解決方案是預先載入代表中的圖像,然後重新使用它。
因此,我有一個屬性在我的委託:
@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發行]」
謝謝弗拉基米爾!這解決了整個問題。你能再次闡述爲什麼需要self.propertyName? (即使用自己和不使用它之間的區別是什麼?) – Eitan
@ eitan27,+ colorWithPatternImage方法返回自動釋放對象,所以你需要保留它來保留它(否則它會像你的情況一樣被釋放) - 你可以做到這一點通過使用保留屬性(所以實際上自動合成的setFabricColor:方法將被調用,舊的ivar值將被釋放,並且新的將被保留)。通過屬性,您可以獲得很多內存管理功能,所以我儘可能使用它們 – Vladimir