iOS:拥有全局字符串的最佳方式 - 通知名称

Jos*_*hDG 4 cocoa-touch global-variables objective-c ios

我一直在阅读关于此的不同内容,这看起来很危险.有人可以告诉我正确的模式来定义可以全局使用的通知字符串吗?我尝试过的所有内容都会导致链接器错误.例如,在我的GlobalVariables单例中,我添加了:

#import <Foundation/Foundation.h>
extern NSString *kMPTimeChanged;

@interface GlobalVariables : NSObject etc. 
Run Code Online (Sandbox Code Playgroud)

然后在init中:

@implementation GlobalVariables

#pragma mark Singleton Methods

+ (id)sharedGlobals {
    static GlobalVariables *sharedGlobals = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        sharedGlobals = [[self alloc] init];

    });
    return sharedGlobals;
}

- (id)init {
    if (self = [super init]) {

      kMPTimeChanged=@"kMPTimeChanged";

    return self;
}
Run Code Online (Sandbox Code Playgroud)

它没有构建,我有多个错误.

Hol*_*lly 16

在你的.h文件中你应该写:

extern NSString * const kMPTimeChanged;
Run Code Online (Sandbox Code Playgroud)

在你的.m文件中,你应该写:

NSString * const kMPTimeChanged = @"My Constant";
Run Code Online (Sandbox Code Playgroud)

这些都应该在你的@interface@implementation块之外.