La declaración de NSString externa causa un error en el enlazador

Esto es ridículo, estoy intentando crear un bool de sonido para activar los sonidos de la aplicación. Sigo recibiendo

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)

He comprobado que todos mis archivos están vinculados en las fases de compilación, he eliminado el appdelegate .m donde obtengo el error antes de llamar al bool en cualquiera de mis controladores de vista y lo he importado en las fases de compilación. Comprobado tengo marcos de trabajo relevantes en su lugar. Incluso he comprobado una aplicación anterior que hice con el mismo código y el código parece ser exactamente el mismo sin ningún error (creado con la versión anterior de xcode). Volviendo a lo básico, recibo el error tan pronto como agrego el siguiente código a mi Delegado de aplicaciones,

.h

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

@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;

@end

.metro

#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;
}

Si cambioextern NSString *kPlaySoundPrefsKey; aNSString *kPlaySoundPrefsKey; se construye y luego se estrella ... Estoy fuera de ideas ahora

Respuestas a la pregunta(4)

Su respuesta a la pregunta