同じメソッドを呼び出す約 60 個のボタンを持つ UIView があります。ボタンをクリックすると、この方法でさまざまな画像が開きます。ボタンタグを使用して、呼び出されたボタンと表示する画像を識別します。ギャラリーのように考えてください。
ボタンの描画が難しかったので、Interface Builder を使い、その UIView で XIB を作成しました。ボタンを正しい場所にドラッグし、イベント TouchUpInside でメソッドに接続するだけです。これを使用して、ビューをメイン ビューに追加しました。
NSArray *xibContents = [[NSBundle mainBundle] loadNibNamed:@"Tour" owner:self options:nil];
UIView *tour = [xibContents lastObject];
[self.view addSubview:tour];
これまでのところ非常に優れているため、一見するとうまく機能します。残念ながら、アプリがしばらく使用されていると、いくつかの問題があります。ボタンはまだ強調表示されています (したがって、まだここにあります!) が、呼び出されるアクションはもうありません。ハイライトだけあり、アクションはありません。
理由はわかりませんが、どういうわけかガベージ コレクターが UIButton ターゲットを破壊しているようです。なんで?どうすれば修正できますか?
プログラムでボタンを宣言していないことに注意してください。IBに入れるだけで十分だと思いました。
また、メモリの警告と UIButton ターゲットの破壊との間の接続を見つけることができませんでした。アプリにメモリの警告が表示されますが、ほとんどの場合、ボタンは引き続き機能します。
しかし、バグは完全にランダムに発生するため、ガベージ コレクターである必要があります。このエラーを再現する方法はありません。5 回クリックした後に発生することもあれば、アプリで 10 分間使用した後に発生することもあります。