0

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.

4

0 回答 0