我有一个自定义的UITableViewController,我试图用它来管理UITableView。包含UITableView的主UIViewController中的代码流程如下所示:
_messagesTableVC = [[AllMessagesTableViewController alloc] init];
_allMessageTableView.dataSource = _messagesTableVC;
_allMessageTableView.delegate = _messagesTableVC;
[_allMessageTableView reloadData];
初始化AllMessagesTableViewController
自定义UITableViewController类,它执行任何所需的处理,并将_allMessageTableView
(UITableView)的委托设置为我的自定义类。
当我运行此代码时,程序就像自定义类不存在一样,但不会发生错误。似乎自定义类中的NO方法被调用,没有init,没有initWithCoder,没有(我已设置断点并检查;))。
正如您在下面的屏幕截图中看到的,我在自定义类refreshData
之后设置了一个断点,我设置为返回YES
。我将refreshData
的返回值分配给局部变量test
。
在调试器中:
_messagesTableVC
自定义类似乎不是零。 test
似乎不存在。[_messagesTableVC refreshData]
时,它会显示error: Execution was interrupted, reason: Attempted to dereference an invalid ObjC Object or send it an unrecognized selector.
The process has been returned to the state before expression evaluation.
。那么_messagesTableVC
实际上是零吗?可能导致这些问题的原因还是GDB玩游戏?这是一个消息应用程序扩展,以防万一。感谢。
更新:以下是自定义类init和refreshData的代码
- (instancetype)init {
self = [super init];
if (!self)
return nil;
return self;
}
- (BOOL)refreshData {
return YES;
}
Update2:我创建了一个空白的工作项目,并将确切的文件复制粘贴到我的原始项目中(因为它是一个大型iOS应用程序的iMessage扩展)。事实证明,即使我清理了项目并更改了UITableView委托以提供不同的文本,Xcode仍在运行应用程序的旧版本。
答案 0 :(得分:0)
我过去为同一个项目创建了一个消息扩展,删除了目标,同时保留了项目中的文件。当我将Messages Extension重新添加到项目中时,Xcode继续运行应用程序的旧版本。 我通过以下方式修复了Xcode运行旧版应用程序的问题: