以下の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
.