0

アプリケーションの画面の 1 つに高解像度の背景があり、古いデバイスに読み込むには少し時間がかかります。

私の解決策は、デリゲートのイメージをプリロードしてから再利用することです。

したがって、デリゲートに次のプロパティがあります。

@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]」です。
4

1 に答える 1

2

保持する ivar に値を設定するときにプロパティを使用します。

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

コードでは、自動解放された値を保持せずにインスタンス変数に割り当てるだけです。そのため、後で使用しようとする前に割り当てが解除されます。

于 2012-05-10T12:18:35.763 に答える