-3

異なるペン先で作成されたカスタムセルを含むタブビューがあります。各セルにはボタンがあります。作成したオブジェクトの1つでボタンが押されたイベントを処理したくありません(私はそれを呼び出しますPlaylistController)。IBでは、このクラス(PlaylistController)をオブジェクトとして追加し、アクションをIBのオブジェクト表現にドラッグしてTouch Up Inside、ボタンが押されたときに簡単なアラートを実装しました。しかし、シミュレーターのボタンを押すと、EXC_BAD_ACCESSが表示されます。私のスタックトレース:

Thread 1, Queue : com.apple.main-thread
0   0x010ea09b in objc_msgSend ()
1   0x000202c0 in -[UIApplication sendAction:to:from:forEvent:] ()
6   0x002e41d3 in _UIGestureRecognizerUpdate ()
7   0x01c63afe in __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ ()
11  0x01c40e1b in CFRunLoopRunInMode ()
12  0x01bf57e3 in GSEventRunModal ()
13  0x01bf5668 in GSEventRun ()
14  0x0001cffc in UIApplicationMain ()
15  0x0000227d in main at /Users/bysdan/Documents/workspace/Starling/Starling/main.m:16
16  0x000021a5 in start ()

PS代わりに
これを実行しようとしましたが、ペン先にアクセスしようとした行で例外が発生します。External ObjectObject

NSArray *nibObjs = [[NSBundle mainBundle] loadNibNamed:@"PlaylistCell" owner:nil options:nil];

これどうやってするの?

ありがとう。

4

1 に答える 1

2

私が恐れていたように:あなたの受信オブジェクトはあなたの下からまっすぐに割り当て解除されました、そして1つの明白な理由のために:それは強く保存されていません。IBは、コードの後半で参照するトップレベルのオブジェクトを保持するという意欲を持っていることを誠意を持って受け止めています。XIBがアーカイブ解除され、投稿したオブジェクトに所有者がいない場合(元のNSCoderの外部)、当然、結果なしに割り当てを解除できると見なされます。もちろん、それに関する問題は、IBがすでにオブジェクトをボタンのアクションにバインドしていることです。したがって、ボタンがオブジェクトを呼び出すと、BOOM!オブジェクトを表すIBOutletプレフィックス付きプロパティを追加するだけで、それ自体がクリアされます。

于 2013-03-03T08:46:13.860 に答える