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
UITableViewControllerを使用している場合、tableViewはすでに合成されています。 (つまり、self.tableViewはUITableViewControllerのtableViewです)。
私も同様の問題に直面しました。私はこれを次の方法で解決しました。 .mファイル内の@dynamic tableView
の下に@implementation
を書き込みます
あなたの問題が解決されることを願っています。
変化したこと?コンパイラはより賢くなっています。
おそらくUITableViewControllerをサブクラス化しています。
UITableViewControllerには、tableViewという名前のプロパティがすでにあります。 UITableViewControllerですでに合成または実装されています。したがって、警告は、独自のtableViewプロパティを取得していないが、UITableViewControllerによって提供されているプロパティを取得していることを示しています。
明らかに、UITableViewControllerのtableViewを認識しておらず、これがyourプロパティであると誤って想定した場合、制御下で問題が発生します。そのため、警告が表示されます。したがって、それがあなたがしていることである場合、あなたのコードは常にひどく壊れていて、修正する必要があります。
ただし、コードに@property宣言があるだけで、それが実際にはUITableViewControllerプロパティであることをknowしている場合は、害はありませんが、@ propertyは間違っているため、削除してください。
ImageViewと呼ばれる新しいプロパティを作成するカスタムUITableViewCellで同様の問題がありました。 imageViewという名前のプロパティがすでに存在していたため、エラーメッセージが表示され続けました。名前をprojectImageViewに変更しただけで、機能しました。