在 ObjC 代码上使用 LLVM 3.0 抑制属性定义警告

发布于 2024-12-11 13:57:17 字数 681 浏览 0 评论 0原文

由于 Xcode 4.2 附带了 LLVM 3.0,我们终于能够使用自动合成了。您可以通过将以下两个标志添加到 Apple LLVM compiler 3.0 - Language 部分中的 Other C Flags 来打开它:

  • -Xclang
  • < code>-fobjc-default-synthesize-properties

现在,如果您只想使用属性合成的默认设置(我想我们已经使用自动引用计数)。

当我点击构建时,编译器会警告我缺少 @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;

我更喜欢无警告构建,因此问题是:我怎样才能抑制这种警告,因为显然它们不再有意义了。

Since Xcode 4.2 comes with LLVM 3.0 we're finally able to use automatic synthesizeation. You can turn it on by adding the following two flags to your Other C Flags in the Apple LLVM compiler 3.0 - Language section:

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

Now you can get rid of your @synthesize boiler plate code if you just want the default settings for your property synthesizeation (I guess we already use automatic reference counting).

When I hit build, the compiler warns me about missing @synthesize etc. statements, like so:

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;

I prefer a warning-free build, so the question is: How can I suppress this kind of warnings because obviously they don't make sense anymore.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

黎歌 2024-12-18 13:57:17

您确定 -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

Are you sure -Xclang is passed to the compiler

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

does not show any warnings while

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

does which is by the way correct since no properties are synthesized

Here is the TestClass.m I used:

#import <Foundation/Foundation.h>

@interface TestClass : NSObject

@property (nonatomic, strong) NSObject * test;

@end

@implementation TestClass

@end
红焚 2024-12-18 13:57:17

好的,我设法使用这些 C 标志来抑制该警告:

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

不幸的是,getters/setters 不会被合成(...事实上我的应用程序崩溃了...)

Ok, I managed to suppress that warning using these C flags:

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

Unfortunately, getters/setters don't get synthesized (...and in fact my app crashes...)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文