我不是完全的新手,但现在感觉自己像个新手。
我拿了一个现有的工作应用程序。它可以在Xcode 5下工作,现在也可以在Xcode 6下工作。编译和运行都没有问题。我在Xcode 6中启动了一个新项目,并开始使用我的工作应用程序的结构重建一个新的应用程序外壳。将其中所有我在每个应用程序中使用的标准库移植过来。我在Xcode 5下已经做过这几次了,没有任何问题。
但现在当我构建时,在特定库(TBXML)中出现了很多错误,但是即使我的其他工作项目中也有相同的库,我也没有得到任何这些错误。如果我把这些文件拿出来(因此不编译它们),就没有错误,应用程序可以正常启动。
我甚至还没有包含这个库。无论我是否包含,都会出现相同的错误。但是它们在“编译源”下列出,所以它们正在被编译。
这些错误是这样的:
....blah..../TBXML/TBXML-Headers/TBXML.h:124:49: 未知类型名称'NSError'
在这一行上:
typedef void (^TBXMLFailureBlock)(TBXML *tbxml, NSError *error);
在这一行中: /TBXML/TBXML-Headers/TBXML.h:126:71:未知类型名'NSString'
typedef void (^TBXMLIterateAttributeBlock)(TBXMLAttribute *attribute, NSString *attributeName, NSString *attributeValue);
在第133行:
/TBXML/TBXML-Headers/TBXML.h:133:20: 未找到“TBXML”的超类“NSObject”的接口声明
@interface TBXML : NSObject {
需要核对的项目:
- 我已经拥有了所有必要的框架,包括Foundation。
- 这些文件没有编译器标志——与旧项目匹配。
- 建立和目标iOS在两个项目中相同。
- 我不想使用“不要使用TBXML”,因为它在其他项目中运行良好。
我认为这可能是项目设置方面的差异,因为我的旧项目是在Xcode 5下创建的,而这个项目是在Xcode 6下创建的。但我已经到处寻找了。
*更新*
这似乎可以解决问题:TBXML in an iOS 8 extension fails to build
但我仍然想知道原因。问题仍然存在。为什么一个项目需要#include而另一个项目不需要呢?主要的区别是一个是在Xcode 5下创建的,另一个是在Xcode 6下创建的。但是现在两个项目都在Xcode 6中。