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ファイルのヘッダーに追加されるため、 Class define here は を定義せずに複数回コンパイルされますRUN_ONCEが、必要なのは、このRUN_ONCEセクションを 1 回だけコンパイルさせることです。これを解決するために、プロジェクトのファイルにコンパイラ フラグを追加し-DRUN_ONCEます。フラグを追加する必要のない.mワンステップの解決策があるのだろうか?#ifdef RUN_ONCE

.mいいえ、別のファイルは必要ありません。このスニペットは、別の.pch.

4

0 に答える 0