gpt4 book ai didi

ios - 为什么 GCC -Wselector 和 -Wundeclared-selector 对已声明的选择器发出警告?

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

GCC 的 -Wselector-Wundeclared-selector 选项的描述使它们听起来像是很棒的编程工具,可以防止 Objective-C 中的拼写错误 @selector( ) 表达式。

但是,在我的代码库中启用它们后,我收到如下警告:

Unimplemented selector 'reloadData'

指向这样的行:

[self.tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO];

这行代码在我们的代码库中相当常见。数据是异步加载的,一旦加载完成,上面的代码行用于通知 UITableView 重新加载(在主线程上,因为从后台线程调用 UIKit 不是一个好主意)。

我的问题是多部分的:

  1. 上面的代码行是否在某些方面不正确?是否有更好的模式在主线程上向 UITableView 发送信号以重新加载其数据?
  2. UITableView.h 中明确声明了 reloadData 选择器时,为什么 GCC 会发出警告?
  3. 有没有办法让 GCC 警告未声明的选择器,而不会导致它提示明确声明的选择器?

最佳答案

是的,我是 -Wundeclared-selector 的粉丝.我还没有看到这个问题突然出现。你有没有#import <UIKit/UIKit.h>在这个特定文件中(或在您的 .pch 中)?我无法在带有 -Wundeclared-selector 的简单程序中重现此问题。 .

  • 使用 Storyboard 创建单 View iOS 项目
  • 将 UITableView 放到主视图上。连线到 tableView IB导出
  • 打开“未声明的选择器”警告
  • 将您的代码行放入viewDidLoad
  • build

更改 reloadDatareloadDat我收到了警告(如预期的那样):

Undeclared selector 'reloadDat'

你说你得到“未实现的选择器‘reloadData’”。这真的是警告,还是您要输入“Undeclared?”

关于ios - 为什么 GCC -Wselector 和 -Wundeclared-selector 对已声明的选择器发出警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9168593/

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