【发布时间】:2013-03-17 13:10:08
【问题描述】:
我正在开发 iOS 的第 3 方 UIKit 替代品。我使用来自 GitHub 的一个非常有用的项目将它构建为一个框架。 (不是我的,但如果你有兴趣,那就是here。
我正在尝试在我正在编写的其他项目中使用我的库。就像我说的,它基本上是大部分 UIKit 的替代品,所以我决定在我项目的 *.pch 文件中导入框架,而不是在我希望使用按钮、操作表、警报视图等的任何地方。 .
当我在头文件中没有#import 指令并声明MBMButton 类型的属性时,编译器给我一个错误“未知类型名称'MBMButton';您的意思是'UIButton'? "奇怪的是,代码仍然会运行(尽管这是一个错误,而不是警告)。添加 @class MBMButton 或 #import <MBMUIKit/MBMUIKit.h> 可解决此编译器投诉。
当我在实现文件(或其标头)中没有#import 指令并调用存在于MBMUIButton 但不存在于UIButton 中的方法时,我得到一个编译器错误 的“'UIButton' 没有可见的@interface 声明选择器...”。和以前一样,代码将实际运行,因为它是一个有效的调用。
现在,我进行了一些挖掘,并更改了项目的设置。在 GCC_PREFIX_HEADER 中没有任何值的地方,我添加了文件名。注意到 Apple 的快速帮助描述,我尝试了“ProjectName-Prefix.pch”和“./ProjectName-Prefix.pch”。似乎都没有解决问题。我最终发现 Target 级别的设置会覆盖 Project 级别的设置,并且 Target 级别的设置已经指定了“ProjectName/项目名称-前缀.pch”。所以这是一个死胡同。 (很高兴确切了解相对路径设置是什么!)
我可以不使用 *.pch 文件。这只是一种方便,我绝对可以使用适当的@class 和#import 指令。困扰我的不是理解问题。 应该如何使用 *.pch 文件?
【问题讨论】:
标签: xcode compiler-construction import settings