2015-04-09 2 views
57

В новом Xcode 6.3 я получаю это предупреждение:XCode 6.3 Предупреждение: синтезируют свойство

Авто синтез собственности не будет синтезировать свойство 'homeInt'; он будет реализован его суперклассом, используйте @dynamic для подтверждения намерения

Как я могу его удалить?

ответ

55

Я просто снял это объявление свойства, так как он уже был объявлен в родительском классе

98

Если вы перекрывая то же свойство из высшего класса с целью:

@implementation MyClass 

@dynamic homeInt; 

... 

Если нет, то переименовать имущество.

+9

Он должен быть принят ответ –

3

это причина по классу ребенка определить такое же имя свойства переопределения для родительского класса, такие как:
1) класс ребенка «AFHTTPSessionManager» уже определяет:

@property (nonatomic, strong) AFHTTPResponseSerializer <AFURLResponseSerialization> * **responseSerializer**; 

2) родительский класс «AFURLSessionManager» есть определить :

@property (nonatomic, strong) id <AFURLResponseSerialization> **responseSerializer**; 

3) причина сверху, предупреждение придет! если хотите удалить его, просто переименуйте имя свойства конфликта!
4) или, как он предлагает, добавьте «@dynamic homeInt» в ваш файл реализации;

+0

я вижу одни и те же предупреждения для AFNetworking. Вопрос в том, что все это нужно беспокоиться? Им даже нужно внимание для этой библиотеки –

+2

исправлено! https: // GitHub.com/AFNetworking/AFNetworking/commit/3fc8071582dfa552cb06b0dc7f1104c6bf5301f1 @BradThomas – zmingchun

+1

Я рад, что я не единственный, кто случайно заканчивает предложения с точкой с запятой; – hyperspasm

5

Если вы хотите, чтобы избежать добавлений @dynamic <varName> каждое место, которое вы преодолены свойство супер класса, намеренно, вы можете добавить -Wno-objc-property-synthesis флаг «Другие флаги предупреждения» под вашими проектами строительства установок. Это приведет к подавлению предупреждения по всему проекту.

+0

Это не подавляет предупреждения для меня ... Я использую Cocoapods, не уверен, что это переопределение моих флагов. – AnthonyM

+0

-Wno-objc-property-синтез не работает для меня, чтобы подавить это предупреждение. У кого-нибудь есть идеи? –

+0

Позвольте мне уточнить это. Он не работает, когда я вставляю его в код с кодом «#pragma clang diagnost ignored», но он работает, когда я помещаю его с флагами компилятора. Я бы предпочел не делать его общим по всему моему коду с флагами компилятора ... –

0

Если вы обновили Xcode 6.3, просто обновите AFNetworking до версии 2.5.2, и эти предупреждения должны исчезнуть.

+1

Это правильно для предупреждений, вызванных свойствами AFNetworking. Первоначальный вопрос касался не одного из них. – ecotax

9

Следуя комментарию @ 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-свойство-синтез"

Смотрите также https://github.com/couchbase/couchbase-lite-ios/issues/660

Смежные вопросы