更新到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
答案 0 :(得分:16)
如果你正在使用UITableViewController,那么tableView已经被合成了。 (即self.tableView是UITableViewController的tableView)。
答案 1 :(得分:15)
我也遇到过类似的问题。我通过以下方法解决了这个问题。在.m文件中,在@dynamic tableView
@implementation
我希望你的问题能够得到解决。
答案 2 :(得分:11)
发生了什么变化?编译器变得更加聪明。
您可能是UITableViewController的子类。
UITableViewController已经有一个名为tableView的属性。它已在UITableViewController中合成或以其他方式实现。所以警告告诉你,你没有获得自己的tableView属性,但是你得到的是UITableViewController提供的属性。
显然,如果您不知道UITableViewController中的tableView,并且如果您错误地认为这是您的属性,则在您的控制之下会出现问题。这就是你收到警告的原因。因此,如果这就是您正在做的事情,那么您的代码总是被严重破坏,需要修复。
但是如果您的代码中只有@property声明,但是知道它实际上是UITableViewController属性,则不会造成任何伤害,但删除了@property,因为它是错误的。
答案 3 :(得分:1)
与自定义UITableViewCell有类似的问题,创建一个名为imageView的新属性。由于名为imageView的属性已经存在,我不断收到错误消息。我只是将名称更改为projectImageView并且它有效。