【问题标题】:Creating member object in Xcode: Program received signal: "SIGABRT"在 Xcode 中创建成员对象:程序接收到的信号:“SIGABRT”
【发布时间】:2012-04-22 03:35:32
【问题描述】:

警告:完成新手 Xcode 问题。

MainViewController.h 我有以下行:

IBOutlet WorkItem *m_WIone;

我创建了一个名为WorkItem 的类,它继承自UILabel。上面的行是为了让我可以使用m_WIone(最终将成为此类对象的数组)作为整个MainViewController 的成员变量。

我尝试了各种方法来调用WorkItem方法,最终确定了:

[m_WIone 重置];

其中ResetWorkItem 方法。该方法在WorkItem.h 中声明为:

-(void) 重置;

WorkItem.m 中:

-(void) 重置 {}

无论有无此方法中的内容,应用程序总是崩溃:

线程 1:程序接收到的信号:“SIGABRT”。

在日志中,我读到:

由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[UILabel Reset]: unrecognized selector sent to instance 0x6a5f9f0”

我该如何解决这个问题?我什至正确地声明了这个成员变量吗? (尽管通过 StackOverflow 拖网,我找不到解决方案。)

【问题讨论】:

  • Zaph:我应该添加什么代码,这里没有包含?我想我已经添加了所有相关代码,除了“包含”语句。我应该添加例如“WorkItem”类中的特定内容吗?
  • WorkItem的代码,m_WIone的实例化,方法Reset。为什么IBOutlet,你希望这条线做什么?
  • 谢谢,Zaph,但现在我有一个很好的答案。

标签: objective-c xcode ipad xcode4


【解决方案1】:

您是否为 NIB 指定了自定义类?似乎您希望 XCode 的 Interface Builder 中的小部件使用您的自定义类。只会实例化默认类 (UILabel) 而不是您的自定义类。

单击您用作插座的 UILabel 并更改类(此处的屏幕截图适用于 UITableView,但它应该与 UILabel 相同)。

话虽如此,您尝试做的事情还有其他选择。而不是仅仅使用 UILabel (您最终计划制作一个数组)。为什么不使用 UITableView 并将单元格自定义为您认为合适的单元格(因为 UITableViews 最适合显示项目列表)?

【讨论】:

  • 谢谢杰夫。前段时间我考虑并拒绝了 UITableViews,但鉴于您的建议,我会重新考虑!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多