繁体   English   中英

UIbutton在自定义UITableViewCell中释放

[英]UIbutton deallocated in custom UITableViewCell

使用ARC(自动引用计数),我在子类UITableViewCell有一个UIButton。 表视图控制器实现连接到UIButtonIBAction 在子类化单元的xib中,同一个表视图控制器是文件的所有者。

当我运行应用程序并单击按钮时出现问题,我得到一个EXC_BAD_ACCESS 它在iPhone屏幕上清晰可见,因此它在某些时候被分配。

知道问题可能是什么? 提前致谢!

EDIT1:
注意:我将env变量NSZombieEnabled设置为true。 这是控制台:

2011-10-31 22:22:08.653 MyApp[7176:fb03] *** -[NSObject performSelector:withObject:withObject:]: message sent to deallocated instance 0x6b94d40
(lldb) thread backtrace
* thread #1: tid = 0x1f03, 0x014c3e1e CoreFoundation`___forwarding___ + 206, stop reason = EXC_BREAKPOINT (code=EXC_I386_BPT, subcode=0x0)
frame #0: 0x014c3e1e CoreFoundation`___forwarding___ + 206
frame #1: 0x014c3ce2 CoreFoundation`_CF_forwarding_prep_0 + 50
frame #2: 0x001e45c2 UIKit`-[UIApplication sendAction:to:from:forEvent:] + 96
frame #3: 0x001e455a UIKit`-[UIApplication sendAction:toTarget:fromSender:forEvent:] + 61
frame #4: 0x00289b76 UIKit`-[UIControl sendAction:to:forEvent:] + 66
frame #5: 0x0028a03f UIKit`-[UIControl(Internal) _sendActionsForEvents:withEvent:] + 503
frame #6: 0x002892fe UIKit`-[UIControl touchesEnded:withEvent:] + 549
frame #7: 0x004a2a2a UIKit`_UIGestureRecognizerUpdate + 6725
frame #8: 0x015319ce CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 30
frame #9: 0x014c8670 CoreFoundation`__CFRunLoopDoObservers + 384
frame #10: 0x014944f6 CoreFoundation`__CFRunLoopRun + 1174
frame #11: 0x01493db4 CoreFoundation`CFRunLoopRunSpecific + 212
frame #12: 0x01493ccb CoreFoundation`CFRunLoopRunInMode + 123
frame #13: 0x02449879 GraphicsServices`GSEventRunModal + 207
frame #14: 0x0244993e GraphicsServices`GSEventRun + 114
frame #15: 0x001e1a9b UIKit`UIApplicationMain + 1175
frame #16: 0x0000278d MyApp`main + 125 at main.m:14
frame #17: 0x00001ff5 MyApp`start + 53

弄清楚了。 我正在使用UINibinstantiateWithOwner: options:加载自定义UITableViewCell的nib。 我把主人设置nil 将所有者设置为我的视图控制器修复它。 此外,我的视图控制器是该UITableViewCell笔尖的File's Owner 我猜是因为视图控制器和笔尖没有正确链接,ARC没有看到保持视图的理由。

我不确定,但我感觉你的问题出现在你传递给按钮的选择器中。

尝试查看是否使用带有“:”的选择器来指定带参数的方法。

如果您使用的选择器如下所示:

@selector(method:)

然后是预期“方法”将采取参数:

-(IBAction)method:(UIButton)sender{
}

如果你的功能没有采取任何参数:

-(IBAction)method{
}

那么你的选择器应该是这样的:

@selector(method)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM