0

我在一个必须在 3.0 和 2.2.1 下运行的程序中使用 NSMapTable。正如预期的那样,程序编译 2.2.1 库时没有问题,但是当我切换到 3.0 时,我得到编译器错误:

error: expected specifier-qualifier-list before 'NSMapTable'

换句话说,XCode 找不到 NSMapTable 类的声明。我必须在自己的标题中放入前向声明(@class NSMapTable),然后

#import <Foundation/NSMapTable.h>

在我的实现文件中,以便能够使用 NSMapTable。

对此有何解释?或者它只是一个简单的错误?

(我应该指出,我当然在使用NSMapTable的类的头文件中有#import,但仍然需要特定的导入。)

4

1 回答 1

1

我也不相信 NSMapTable 在 2.2 上可用于为“设备”编译的应用程序;它仅在“模拟器”上可用。由于 3.0 的模拟器是设备的更准确表示,因此该标头不再可用。幸运的是,您可以使用 NSDictionary 和适当的 NSValue 或 NSNumber 围绕键和值的包装对象来完成 NSMapTable 可以做的大部分事情。

于 2009-07-08T00:05:25.657 回答