我已經編寫了一個庫,用於根據您在「首選項」類中聲明的@dynamic
屬性自動生成NSUserDefaults訪問器(請參閱PAPreferences)。你寫在.m文件屬性是這樣的:如何在Xcode 5中禁用屬性自動合成屬性?
@property (nonatomic, assign) BOOL hasSeenIntro;
,然後將其添加到.h文件中:
@dynamic hasSeenIntro;
這工作正常,但如果用戶不小心忘記放在@dynamic
那麼編譯器會自動生成一個等效的@synthesize
行。將不會有任何警告,但當然我的代碼不會被調用該屬性。
我想知道是否有辦法禁用自動屬性綜合只爲這個類。
更新:
感謝尼古拉的回答,我記得有可能促進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
感謝您的選擇 - 我不想去類別路由,因爲用戶代碼會有點難以理解。但是,我忘記了屬性合成編譯器的警告。我最終的結果是將這個警告提升爲只針對喜好類的錯誤。 –