データの読み込み中に表示されるカスタム アラートのようなビューを作成しようとしています。読み込みに時間がかかりすぎる場合に備えて、キャンセル ボタンも用意しました。私はViewControllerでそれを作成し、サブビューとしてウィンドウに追加しています(Loadingアラートビューが可能な限り処理するようにしたいので、View Controllerではありません)。ビューは正常に表示されますが、ボタンをクリックすると、「割り当て解除されたインスタンスにメッセージが送信されました」というメッセージが表示されます。ゾンビツールを使用したところ、それを保持しているものはすべてすぐに解放されているように見えます (私は ARC を使用しています)。
グローバル変数を使用して読み込み警告ビューを割り当てると、それが機能することに気付きましたが、それは望ましい効果ではありません。Alertviewのように表示できるようにしたい。これが私の「show」機能です。それ自体を保持するにはどうすればよいですか(?)。
- (void) show{
//this is so the user can't accidentally hit a button in the parent view while the
// alert is active
parentView.view.userInteractionEnabled = NO;
//I get the window
id appDelegate = [[UIApplication sharedApplication] delegate];
UIWindow *window = [appDelegate window];
//I set up the view and create/assign the correct placement of it as well as
//make it invisible so I can fade it in later.
self.view.alpha = 0.0;
self.view.frame = [self createFrameFor:self.view withOffset:0];
//since the view is smaller that the window I create an image that is the size
//of the window but semi-transparent
UIImage *bg = [self setupBackground];
backgroundView = [[UIImageView alloc] initWithImage:bg];
backgroundView.alpha = 0.7;
//I add the views to the window here
[window addSubview:backgroundView];
[window addSubview:self.view];
[activityIndicator startAnimating];
[self fadeIn:self.view];
}