自动属性合成不会合成属性 - 新警告iOS8.3

Dev*_*evC 12 ios synthesize ios8.3

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

@property (strong, nonatomic) IBOutlet UITableView *tableView;
Run Code Online (Sandbox Code Playgroud)

它是在'.m'文件中声明的.

iOS8.3中发生了哪些变化,使其成为警告?

Auto property synthesis will not synthesize property 'tableView'; it will be implemented by its superclass, use @dynamic to acknowledge intention
Run Code Online (Sandbox Code Playgroud)

Mar*_*kle 16

如果你正在使用UITableViewController,那么tableView已经被合成了.(即self.tableView是UITableViewController的tableView).


foz*_*glu 15

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

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


gna*_*729 11

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

您可能是UITableViewController的子类.

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

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

但是如果您的代码中只有@property声明,但是您知道它实际上是UITableViewController属性,则不会造成任何伤害,但是删除了@property,因为它是错误的.