gpt4 book ai didi

ios - 不调用 ObjC 类方法。 GDB玩游戏?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:57:02 24 4
gpt4 key购买 nike

我有一个自定义的 UITableViewController,我试图用它来管理 UITableView。我的代码在包含 UITableView 的主 UIViewController 中的流程如下所示:

    _messagesTableVC = [[AllMessagesTableViewController alloc] init];

_allMessageTableView.dataSource = _messagesTableVC;
_allMessageTableView.delegate = _messagesTableVC;

[_allMessageTableView reloadData];

AllMessagesTableViewController 自定义 UITableViewController 类已初始化,它执行任何需要的处理,我将 _allMessageTableView(UITableView)的委托(delegate)设置为我的自定义类。

当我运行这段代码时,程序的行为就好像自定义类不存在一样,但没有发生错误。似乎没有调用自定义类中的方法,没有 init,没有 initWithCoder,什么都没有(我已经设置了断点并检查了;))。

如您在下面的屏幕截图中所见,我在自定义类中的自定义方法 refreshData 之后设置了一个断点,我将其设置为返回 YES。我将 refreshData 的返回值分配给局部变量 test

在调试器中:

  1. _messagesTableVC 自定义类似乎不是 nil。
  2. test 似乎不存在。
  3. 此处未显示,但当我尝试在调试器中运行 [_messagesTableVC refreshData] 时,它显示 error: Execution was interrupted, reason: Attempted to dereference an invalid ObjC Object or send it无法识别的选择器。
    进程已经返回到表达式求值前的状态。
    。那么 _messagesTableVC 实际上是 nil 吗??

screenshots

是什么导致了这些问题,或者 GDB 在玩游戏?这是一个消息应用程序扩展,以防有任何不同。谢谢。

更新:这是自定义类 init 和 refreshData 的代码

- (instancetype)init {
self = [super init];
if (!self)
return nil;
return self;
}

- (BOOL)refreshData {
return YES;
}

更新 2:我创建了一个空白的工作项目,并将确切的文件复制粘贴到我的原始项目中(因为它是一个大型 iOS 应用程序的 iMessage 扩展)。事实证明,即使在我清理了项目并更改了 UITableView 委托(delegate)以提供不同的文本之后,Xcode 仍在运行应用程序的旧版本。 more

最佳答案

我过去为同一个项目创建了一个消息扩展,并删除了目标,同时将文件保留在项目中。当我将 Messages Extension 重新添加到项目时,Xcode 继续运行该应用程序的旧版本。我通过以下方式解决了 Xcode 运行旧版本应用程序的问题:

  1. 全部清理干净
  2. 从项目中删除消息扩展目标
  3. 将现有的消息扩展代码备份到项目外的目录中。然后从项目中删除消息应用组和目录。
  4. 从项目中删除消息扩展构建方案。
  5. 删除项目派生数据目录。
  6. 重新启动 Xcode,在项目中创建新的消息扩展目标,并导入保存的代码。

关于ios - 不调用 ObjC 类方法。 GDB玩游戏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39887080/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com