0
私のアプリケーションの画面の1つに、高解像度の背景があり、古いデバイスでは読み込みに時間がかかりすぎます。背景UIImageがゾンビのデリゲートになります
私の解決方法は、デリゲートのイメージにプリロードしてから再利用することです。
@property (nonatomic, strong, retain) UIColor *fabricColor;
と私はdidFinishLaunchingでの画像読み込み:したがって
、私は私のデリゲートでプロパティを持って、私は私のナビゲーションコントローラにdelegate.fabricColorを参照しようとすると、しかし
fabricColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"bg.png"]];
を、それはゾンビです:
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