iOS:EXC_BAD_ACCESS按下按钮时

时间:2013-03-03 08:27:13

标签: ios objective-c

我有一个tabe视图,其中包含在不同的笔尖中创建的自定义单元格。在每个单元格中,我都有一个按钮。我不想处理我创建的一个对象中的按钮按下事件(我称之为PlaylistController)。在IB中,我将此类(PlaylistController)添加为对象,然后将Touch Up Inside动作拖动到IB中的对象表示,并在按下按钮时实现简单警报。但是当我按下模拟器上的按钮时,我得到了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 ()

P.S。
我还尝试使用External Object代替Object来执行此操作,但是在我尝试访问笔尖的行中出现异常。

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

我该怎么做?

感谢。

1 个答案:

答案 0 :(得分:2)

正如我所担心的那样:你的接收物体已从你身下直接释放出来,原因很明显:它没有强烈存放。 IB真诚地相信你有能力保留你以后在代码中引用的顶级对象。当XIB被解压缩,并且您发布的对象没有所有者(在原始NSCoder之外)时,自然会假设它可以被释放而没有后果。当然,问题在于IB已经将对象绑定到按钮的动作上。所以,当按钮调出对象时,BOOM!只需添加一个表示对象的IBOutlet前缀属性,它就应该自行清除。