如何在Xcode项目的Prefix.pch中编译一次部分?

时间:2013-01-27 09:01:25

标签: ios objective-c xcode precompile

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来保持此代码段的工作原理。

0 个答案:

没有答案