Prefix.pch
如下。
#ifdef __OBJC__
#import <Foundation/Foundation.h>
#define BUNDLE_NAME XXXBundle
#define LOADER_CLASS XXXBundleLoader
extern NSBundle *BUNDLE_NAME;
#undef NSLocalizedString
#define NSLocalizedString(key, comment) [BUNDLE_NAME localizedStringForKey:(key) value:@"" table:nil]
#ifdef RUN_ONCE
NSBundle *BUNDLE_NAME;
@interface LOADER_CLASS : NSObject @end
@implementation LOADER_CLASS
+ (void)load
{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
BUNDLE_NAME = [NSBundle bundleWithURL:[[NSBundle mainBundle] URLForResource:@"CXAFMResources" withExtension:@"bundle"]];
});
}
@end
#endif
#endif
.pch
将被添加到每个.m
文件的头部,所以这里的类定义会编译多次而不定义RUN_ONCE
,但我需要的是让这RUN_ONCE
部分只编译一次。我在我的项目文件中添加了一个编译器标志-DRUN_ONCE
来.m
解决这个问题。#ifdef RUN_ONCE
我想知道是否有不需要添加标志的一步解决方案?
不,我不想要另一个.m
文件。我想通过仅复制到另一个.pch
.