我编写了一个库,可以根据你在“preferences”类中声明的 @dynamic
属性自动生成 NSUserDefaults 访问器(详见PAPreferences)。你可以在 .m 文件中像这样编写属性:
@property (nonatomic, assign) BOOL hasSeenIntro;
然后将以下内容添加到.h文件:
@dynamic hasSeenIntro;
这个方法很好用,但是如果用户不小心忘了加上
@dynamic
这一行,编译器就会自动生成一个相应的 @synthesize
行。虽然不会有任何警告,但我的代码当然也无法为该属性调用。
我想知道是否有办法仅禁用此类别的自动属性合成。
更新:
感谢 Nikolai 的答案,我记得可以将 LLVM 警告升级为错误,并将声明封装在该错误中以实现我想要的效果(如果用户忘记指定 @dynamic
行,则会引发一个错误):
// Ensure we get an error if we forget to add @dynamic for each property
#pragma clang diagnostic push
#pragma clang diagnostic error "-Wobjc-missing-property-synthesis"
@interface Preferences : PAPreferences
@property (nonatomic, assign) BOOL hasSeenIntro;
@property (nonatomic, assign) NSInteger pressCount;
@end
#pragma clang diagnostic pop