我有一个相当简单的应用程序(我的第一个非平凡的iOS应用程序),我已经工作了一段时间。我已经完成了应用程序的完成和工作,但我今天早些时候决定重构它以更好地适应OO设计原则(为了简单起见,我已将大部分应用程序放入主视图控制器中;我回去尝试把它分成第二类)。现在,每当我尝试运行我的应用程序时,在主视图加载之前出现以下错误都会导致崩溃:
IntervalPlayer[1374:907] -[UIButton intValue]: unrecognized selector sent to instance 0x1c5569d0
通过在任何地方抛出print语句,我可以告诉我通过initWithNibName:bundle:OK,但应用程序在调用viewDidLoad之前崩溃了。很明显,我的代码中的某些东西试图在UIButton上调用intValue,但我的代码中没有任何内容可以做到这一点 - 我只在整个应用程序中使用一次intValue,当我评论该行时我得到相同的错误。事实上,我已经尝试在initWithNibName中注释掉所有东西:bundle:在调用超类构造函数之后,我在同一个地方得到了同样的错误。所以换句话说,就我所知,空构造函数中的某些东西导致在我的应用程序中有任何其他东西运行之前在UIButton上调用intValue。我假设它在委托或笔尖中的某些东西,但我已经看过两者并且我没有看到任何不寻常的东西。有没有人曾经遇到过这样的事情?
原谅缺乏代码片段,我不确定我会提供什么来说明这一点。这是空构造函数,错误仍在发生:
- (id)initWithNibName:(NSString *)nibName bundle:(NSBundle *)aBundle
{
self = [super initWithNibName:(NSString *)nibName bundle:(NSBundle *)aBundle];
if (self) {
}
return self;
}
如果有人可以建议添加任何其他代码,我会编辑问题。
谢谢,
丹
编辑:是的,我正在使用ARC。此外,澄清一下,这发生在我的主视图控制器中,我没有触及代表。编辑2:崩溃发生在我的代表身上;根据调试器,问题行是[self.window makeKeyAndVisible];由于我没有碰过代表,我的猜测是NIB在某种程度上无效。
最终编辑:通过删除按钮直到我找到导致崩溃的按钮,然后将其挂回到视图控制器中连接的所有内容,我发现当按钮连接到UIButton插座时它会崩溃,当它不是时,不会崩溃。我取下插座,重新制作它,现在它可以工作了。所以我不知道发生了什么,但不知怎的,我修复了它。非常感谢所有提出建议的人!
答案 0 :(得分:0)
在您的应用中启用断点,以便XCode显示错误发生的行。
如果您遇到问题,请发布导致崩溃的代码行
答案 1 :(得分:0)
我最终得到了同样的错误和症状。重新创建按钮并重做插座没有帮助。不过,我对IB连接并没有犯错误。
我心不在焉的是命名按钮的出口tag
,并且这个名称与所有UIViews具有相同名称的NSInteger属性别名。加载我的NIB时,iOS基本上在做[tag getInt]
,但使用我的按钮而不是它想要的NSInteger属性。