1

我在 Xcode 中开始了一个新的 iOS 项目。添加了两个文件:“constants.h”和“constants.m”,其中包含我在其他文章中看到的内容:

常量.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";

我敢肯定,.m 文件被分配为我的 ios-target 构建。我也确信,该文件是在 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.o ld 中的 -[AppDelegate applicationWillResignActive:]:未找到体系结构 i386 的符号:错误:链接器命令失败,退出代码为 1(使用 -v 到见调用)

仅针对这种情况的新创建项目会发生这种情况。我的构建设置似乎没问题,我已经检查了构建设置下的“架构”路径。他们都显示'ArmV7'但没有显示i386,那是怎么回事?

Xcode 4.6.3Xcode 5.

4

1 回答 1

3

逐字阅读您的常量名称。或者添加一些空格以便于阅读。

extern NSString * const PSUsername_preferences;
       NSString * const PSUsername_preference

你看出区别了吗?s在定义的末尾添加字母。

于 2013-07-16T07:30:45.303 回答