1

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

4

1 に答える 1

3

定数名を一文字一文字読んでください。または、読みやすくするために空白を追加します。

extern NSString * const PSUsername_preferences;
       NSString * const PSUsername_preference

違いがわかりますか?s定義の最後に文字を追加します。

于 2013-07-16T07:30:45.303 に答える