我是我的 AppDelegate.h
我刚刚定义了常量:
#define XXDefaultFeedbackRecipent @"feedback@app.com"
#define XXDefaultFeedbackSubject @"Feedback"
定义这些类型的设置的正确位置是什么?它们不是用户设置,但它们确实有可能从一个版本更改为下一个版本。
我是我的 AppDelegate.h
我刚刚定义了常量:
#define XXDefaultFeedbackRecipent @"feedback@app.com"
#define XXDefaultFeedbackSubject @"Feedback"
定义这些类型的设置的正确位置是什么?它们不是用户设置,但它们确实有可能从一个版本更改为下一个版本。
没有合适的位置,但您可以将其放在“常量”文件中(我通常创建一个名为常量的类,删除该类的接口和实现并为此目的保留文件),或者放在使用这些文件的类中定义。
但是,保存这些数据的更好方法是使用以下方法:
// in your .h file
extern NSString * const XXDefaultFeedbackRecipent;
// in your .m file
NSString * const XXDefaultFeedbackRecipent = @"feedback@app.com";
ps 有一个关于编写#defines 的约定,它希望你用大写字母写下#defines 的名称,并用下划线分隔单词(例如MY_DEFINE)。这是为了防止与 C 库和其他文件中的其他内容发生冲突。编写#defines 时请记住这一点。
您可以将它们作为常量保存在类中,并通过 .h 文件中的 extern 访问它们。为了类型安全,我还建议使用 consts。
In your .h
extern NSString * const XXDefaultFeedbackRecipent;
extern NSString * const XXDefaultFeedbackSubject;
In your .m
NSString * const XXDefaultFeedbackRecipent = @"feedback@app.com";
NSString * const XXDefaultFeedbackSubject = @"Feedback";
我推荐其他答案已经解释过的方法。使用外部 NSString * const
避免 #defines 用于此类事情,因为在您引用它的任何地方,都会分配一个新的 NSString。如果您只引用一次或两次但远非最佳,这不是问题。
小心不要误用它。对于配置值、服务端点等,请考虑使用 plist 来存储值。它使编辑配置值变得更加容易,并通过持续集成设置、多个服务环境和通过推送通知进行的远程配置更新提供了更大的灵活性。