Подавить предупреждение определения свойства с помощью LLVM 3.0 в коде ObjC - PullRequest
4 голосов
/ 25 октября 2011

Поскольку Xcode 4.2 поставляется с LLVM 3.0, мы наконец-то можем использовать автоматический синтез . Вы можете включить его, добавив следующие два флага к вашему Other C Flags в разделе Apple LLVM compiler 3.0 - Language:

  • -Xclang
  • -fobjc-default-synthesize-properties

Теперь вы можете избавиться от кода @synthesize, если вы просто хотите использовать настройки по умолчанию для синтеза вашего свойства (я полагаю, мы уже используем автоматический подсчет ссылок).

Когда я нажимаю на build, компилятор предупреждает меня об отсутствии операторов @synthesize и т. Д., Например:

MyController.h:34:43: warning: property 'myProperty' requires method 'myProperty' to be defined - use @synthesize, @dynamic or provide a method implementation [3]
@property (strong, nonatomic) MyClass *myProperty;

Я предпочитаю сборку без предупреждений, поэтому вопрос : Как я могу подавить такого рода предупреждения, потому что, очевидно, они больше не имеют смысла.

Ответы [ 2 ]

4 голосов
/ 25 октября 2011

Вы уверены, что -Xclang передается компилятору

clang -x objective-c -Xclang -fobjc-default-synthesize-properties -c TestClass.m -o TestClass.o 

не отображает никаких предупреждений, в то время как

clang -x objective-c -fobjc-default-synthesize-properties -c TestClass.m -o TestClass.o

делает это, кстати, правильно, так как никакие свойства не синтезируются

Вот TestClass.m, который я использовал:

#import <Foundation/Foundation.h>

@interface TestClass : NSObject

@property (nonatomic, strong) NSObject * test;

@end

@implementation TestClass

@end
0 голосов
/ 31 мая 2012

Хорошо, мне удалось подавить это предупреждение с помощью следующих флагов C:

-Xclang -fobjc-default-synthesize-properties -Wno-objc-property-implementation

К сожалению, методы получения / установки не синтезируются (... и фактически мое приложение аварийно завершается ...)

...