В новом Xcode 6.3 я получаю это предупреждение:
Автоматический синтез свойств не будет синтезировать свойство 'homeInt'; он будет реализован его суперклассом, используйте @dynamic для подтверждения намерения
Как я могу удалить его?
В новом 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
Обратите внимание, что это "-Wobjc-свойство-синтез", а не "-Wno-objc-property-синтез"
См. также https://github.com/couchbase/couchbase-lite-ios/issues/660
Если вы не хотите добавлять @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" в ваш файл реализации;
Если вы обновили Xcode 6.3, просто обновите AFNetworking до версии 2.5.2, и эти предупреждения должны исчезнуть.
@implementation Myclass
@synthesize homeInt = _ homeInt; ...
@end