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
,但我需要的是让这个{{1} section只编译一次。我将编译器标志RUN_ONCE
添加到项目的-DRUN_ONCE
文件中以解决此问题。我想知道.m
是否需要添加标记的一步解决方案?
不,我不想要另一个#ifdef RUN_ONCE
文件。我希望通过仅复制到另一个.m
来保持此代码段的工作原理。