Declarando extern NSString causa erro de linker

Isso é ridículo, estou tentando criar um som bool para transformar em sons de aplicativos. Eu continuo recebendo

Undefined symbols for architecture i386:
"_kPlaySoundPrefsKey", referenced from:
  -[AppDelegate application:didFinishLaunchingWithOptions:] in AppDelegate.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Eu verifiquei que todos os meus arquivos estão ligados em fases de compilação, eu deletei o appdelegate .m onde eu estou recebendo o erro antes mesmo de eu chamar o bool em qualquer um dos meus controladores de visualização, e é importado em fases de compilação. Verificado eu tenho relevantes framweworks no lugar. Eu chequei até mesmo um aplicativo anterior que fiz com o mesmo código e o código parece ser exatamente o mesmo, sem erro (construído com a versão anterior do xcode). Voltando ao básico, recebo o erro assim que adiciono o seguinte código ao meu App Delegate,

.h

#import <UIKit/UIKit.h>
extern NSString *kPlaySoundPrefsKey;

@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;

@end

.m

#import "AppDelegate.h"
#import <AudioToolbox/AudioToolbox.h> 

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:    (NSDictionary *)launchOptions
 {

NSDictionary *defaultDict = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:YES]
 forKey:kPlaySoundPrefsKey];

return YES;
}

Se eu mudarextern NSString *kPlaySoundPrefsKey; paraNSString *kPlaySoundPrefsKey; ele constrói, em seguida, falhas ... Estou sem ideias agora

questionAnswers(4)

yourAnswerToTheQuestion