12

更新到 iOS8.3 后,我开始收到一堆 iOS8.2 上没有的新警告。特别是引起我注意的一个;

@property (strong, nonatomic) IBOutlet UITableView *tableView;

这是在“.m”文件中声明的。

iOS8.3 中发生了什么变化以使其成为警告?

Auto property synthesis will not synthesize property 'tableView'; it will be implemented by its superclass, use @dynamic to acknowledge intention
4

4 回答 4

16

如果您使用的是 UITableViewController,则 tableView 已经合成。(即self.tableView是UITableViewController的tableView)。

于 2015-04-15T17:03:17.423 回答
15

我也遇到过类似的问题。我通过以下方法解决了这个问题。在你的 .m 文件里面@dynamic tableView写下@implementation

我希望你的问题能得到解决。

于 2015-04-16T07:11:37.400 回答
11

发生了什么变化?编译器变得更加聪明。

您可能正在继承 UITableViewController。

UITableViewController 已经有一个名为 tableView 的属性。它已经在 UITableViewController 中合成或实现。所以警告告诉你,你没有得到你自己的 tableView 属性,但是你得到了 UITableViewController 提供的那个。

显然,如果你不知道 UITableViewController 中的 tableView,如果你错误地认为这是你的财产,在你的控制之下,就会有麻烦。这就是你收到警告的原因。因此,如果这就是您正在做的事情,那么您的代码总是被严重破坏,需要修复。

但是如果你的代码中只是有@property 声明,但你知道它实际上是 UITableViewController 属性,没有坏处,但删除@property,因为它是错误的。

于 2015-04-15T17:03:58.433 回答
1

自定义 UITableViewCell 创建一个名为 imageView 的新属性时遇到了类似的问题。由于已经存在名为 imageView 的属性,因此我不断收到错误消息。我只是将名称更改为 projectImageView 并且它起作用了。

于 2015-07-10T07:58:22.180 回答