Xcode で新しい iOS プロジェクトを開始しました。「constants.h」と「constants.m」の 2 つのファイルを、他の記事で見たこのコンテンツに追加しました。
定数.h
#import <Foundation/Foundation.h>
/// Holds the username for connection to the API
extern NSString * const PSUsername_preferences;
/// Holds the password for connection to the API
extern NSString *const PSPassword_preferences;
///Holds the (hopefully) secure server URL. (Defaults to https://API.SomewhatURL.de)
extern NSString *const PSServername_preferences;
そして定数.m:
#import "Constants.h"
NSString *const PSUsername_preference = @"username_preferences";
NSString *const PSPassword_preference = @"password_preferences";
NSString *const PSServer_preference = @"servername_preferences";
確かに、ios-target のビルドに .m ファイルが割り当てられています。ファイルは Build Configurations-Compile Sources の下に追加されていることも確かです。
次に、「Constats.h」を pch ファイルに追加しました。
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#import "Constants.h"
#endif
let say でこれらのいずれかを割り当てることができますAddDelegate
。
NSString * value = PSUsername_preferences;
良い。しかし: これをビルドしようとすると、奇妙なリンカ エラーが発生します。
アーキテクチャ i386 の未定義シンボル: "_PSUsername_preferences"、参照元: -[AppDelegate applicationWillResignActive:] in AppDelegate.old: アーキテクチャ i386 のシンボルが見つかりませんでした。clang: エラー: リンカ コマンドが終了コード 1 で失敗しました (-v を使用して呼び出しを参照)
これは、このケースのためだけに新しく作成されたプロジェクトで発生します。ビルド設定は問題ないようで、Build-Settings の下の「Architectures」パスを既に確認しています。それらはすべて「ArmV7」を表示しますが、i386 は表示しません。
Xcode 4.6.3
上だけでなく下でもテストしましたXcode 5
。