0

我有一个用于存储常量的类。

因此,有两个文件分别调用 Constant.h 和 Constant.m

这就是我在 .h 文件中的内容:

#import <Foundation/Foundation.h>

enum kParams {
    kFirstName = 0,
    kLastName = 1
};

extern NSString * const kNotificationUpdateMainMenu;

这就是我在 .m 文件中的内容:

#import "Constants.h"

NSString * const kNotificationUpdateMainMenu = @"kNotificationUpdateMainMenu";

第一次效果很好,但是当我尝试添加其他一些常量(例如 kNotificationFbLoginSuccsess)时,其他类看不到它。

这是一条消息,向我展示了我遇到的问题。但是我不明白没有这个问题我的其他常量是如何工作的(我添加的只是新常量得到了这个错误)。

/Users/developer/Documents/Projects/Test/Test/Test/AppDelegate.m:121:64: Use of undeclared identifier 'kNotificationFbLoginSuccsess'

我找到了一些解决方法:

  • 打开组织者
  • 清除派生数据
  • 删除 project.xcworkspace 文件和 xcuserdata
  • 关闭项目
  • 重新启动 Xcode

但我认为操作太多,我可以添加一个常量。怎么会?

4

1 回答 1

1

您的“全局”常量实际上不是外部的(单独编译并稍后链接在一起)。采取简单的方法并将NSString * const kNotificationUpdateMainMenu = @"kNotificationUpdateMainMenu";其放入头文件中。方法文件什么都不需要。

我会#define kNotificationUpdateMainMenu @"kNotificationUpdateMainMenu"用来执行拼写检查。编译器将为整个编译创建一个常量字符串的共享实例。

于 2012-10-29T15:16:43.187 回答