Объявление extern NSString вызывает ошибку компоновщика

Это смешно, я пытаюсь создать звуковую перемену в звуках приложения. Я продолжаю получать

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)

Я проверил, что все мои файлы связаны на этапах сборки, я удалил appdelegate .m, где я получаю сообщение об ошибке еще до того, как мне удалось вызвать bool в любом из моих контроллеров представления, и повторно импортировал его на этапах сборки. Проверено, у меня есть соответствующие framweworks на месте. Я даже проверил предыдущее приложение, которое я сделал с тем же кодом, и код, по-видимому, точно такой же без ошибок (построен с предыдущей версией xcode). Возвращаясь к основам, я получаю сообщение об ошибке, как только добавляю следующий код в мой делегат приложения:

.час

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

Если я изменюextern NSString *kPlaySoundPrefsKey; вNSString *kPlaySoundPrefsKey; он строит, а затем вылетает ... У меня сейчас нет идей

Ответы на вопрос(4)

Ваш ответ на вопрос