0

内部に UIButton があり、内部にタップ ターゲットがある UIView サブクラスを作成しました。セレクターは UIView サブクラス内に実装され、Interface Builder によってリンクされます。

しかし、親View ControllerでaddSubviewを実行すると、ボタンをタップすると

performSelector:withObject:withObject:]: 割り当て解除されたインスタンスに送信されたメッセージ

(私はARCを使用しています)deallocメソッドにいくつかのコンソール出力を追加しました.viewDidLoadがUIViewサブクラスのaddSubviewで終了した直後に、サブラスが割り当て解除されていることがわかります。

そのような状況を防ぐにはどうすればよいでしょうか。私は@property(nonatomic、retain)を試し、インスタンスをグローバル配列に追加しました...しかし、うまくいきませんでした。

強い参照が残っていないため、ARCがオブジェクトを解放することは理解していますが、その状況を強制的に防ぐことはできませんでした。

どんな助けでも大歓迎です。

4

3 に答える 3

0

View Controller クラスでサブビュー クラスの強い参照を作成すると、問題の解決に役立つ場合があります。

@property (strong , nonatomic) UIView *subclassName;
于 2013-07-01T11:22:35.397 に答える
0

問題は、NIB をクラスにリンクすることにありました。

UIView オブジェクトをリンクする代わりに、ファイル所有者をクラスにリンクしました。

通常、UIViewController を使用して nib を操作する場合、File Owner を UIViewController クラスにリンクする必要があります。ただし、UIView サブクラスで作業する場合は、UIView オブジェクトをリンクする必要があります。

于 2013-07-01T12:16:01.327 に答える