0

我有一个相当简单的应用程序(我的第一个非平凡的 iOS 应用程序),我已经研究了一段时间。我已经完成并运行了应用程序,但我今天早些时候决定重构它以更好地适应 OO 设计原则(为了简单起见,我将大部分应用程序放在主视图控制器中;我回去尝试把它分成第二类)。现在,每当我尝试运行我的应用程序时,我都会在主视图加载之前崩溃并出现以下错误:

IntervalPlayer[1374:907] -[UIButton intValue]: unrecognized selector sent to instance 0x1c5569d0

通过到处抛出打印语句,我可以说我通过了 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 插座时它正在崩溃,而不是当它不是时崩溃。我卸下了插座,重新制作了它,现在它可以工作了。所以我不知道发生了什么,但我以某种方式修复了它。非常感谢所有提出建议的人!

4

2 回答 2

0

在您的应用程序中打开断点,以便 XCode 向您显示错误发生的行。

  1. 打开断点导航器
  2. 点击左下角的 + 按钮并添加异常断点
  3. 刚打完
  4. 运行您的应用程序,它将在导致问题的代码行处停止。

如果您遇到问题,请在此处发布导致崩溃的代码行

于 2013-03-11T21:24:15.100 回答
0

我最终得到了同样的错误和症状。重新创建按钮并重做插座并没有帮助。不过,我并没有在 IB 连接上犯错。

我心不在焉地做的是命名按钮的出口tag,这为所有 UIView 具有相同名称的 NSInteger 属性命名。加载我的 NIB 时,iOS 本质上是在做某事[tag getInt],但使用我的按钮而不是它想要的 NSInteger 属性。

于 2013-08-15T14:44:31.373 回答