新しいXcode 6.3では、次の警告が表示されます。
自動プロパティ合成では、プロパティ「homeInt」は合成されません。そのスーパークラスによって実装され、意図を確認するために@dynamicを使用します
どうすれば削除できますか?
このプロパティ宣言は、親クラスで既に宣言されているため、単に削除しました
スーパークラスの同じプロパティを意図的にオーバーライドする場合:
@implementation MyClass
@dynamic homeInt;
...
そうでない場合は、プロパティの名前を変更します。
@mplaceのコメントに続いて、私の場合、プロパティのタイプをプロパティの元のクラスのサブクラスに絞り込むために、プロパティをオーバーライドしていました。そのため、@ propertyオーバーライドが必要でした。
私が使用しているものは次のとおりです。
#pragma clang diagnostic Push
#pragma clang diagnostic ignored "-Wobjc-property-synthesis"
// superclass type for currentValue was "id"
@property (nonatomic, strong) NSDate *currentValue;
#pragma clang diagnostic pop
「-Wno-objc-property-synthesis」ではなく「-Wobjc-property-synthesis」であることに注意してください。
こちらもご覧ください https://github.com/couchbase/couchbase-lite-ios/issues/66
スーパークラスのプロパティをオーバーライドした各場所に@dynamic <varName>
を意図的に追加しないようにするには、-Wno-objc-property-synthesis
を追加できます。プロジェクトのビルド設定の下にある「その他の警告フラグ」にフラグを立てます。これにより、プロジェクト全体の警告が抑制されます。
子クラスによるこの原因は、親クラスに同じプロパティ名オーバーライドを定義します。
1)子クラス「AFHTTPSessionManager」の定義は次のとおりです。
@property (nonatomic, strong) AFHTTPResponseSerializer <AFURLResponseSerialization> * **responseSerializer**;
2)親クラス「AFURLSessionManager」は以下を定義しています:
@property (nonatomic, strong) id <AFURLResponseSerialization> **responseSerializer**;
3)上記により、警告が来る!削除する場合は、競合プロパティ名を変更してください!
4)または提案されているように、「@ dynamic homeInt」を実装ファイルに追加します。
@implementation Myclass
@synthesize homeInt = _ homeInt; ...
@終わり
Xcode 6.3にアップデートした場合、AFNetworkingをバージョン2.5.2にアップデートするだけで、これらの警告は消えます。