IOS 6.0 xcode 4.5 编译错误#import 代码保存在类外的文件中
Posted
技术标签:
【中文标题】IOS 6.0 xcode 4.5 编译错误#import 代码保存在类外的文件中【英文标题】:IOS 6.0 xcode 4.5 compilation errors #import code held in files outside of the class 【发布时间】:2012-09-26 20:35:54 【问题描述】:我一直在愉快地编译并使用 Xcode 4.3.2 (ios5.1)。现在我已经冒险并决定迁移到 Xcode 4.5,我的应用程序以最悲惨的方式编译失败。现在,我还没有解决 ARMV7 或类似问题的问题。不,我的问题可能会让你们中的许多人呻吟。
但是你可以责怪我的基本 ANSI C 天。每个人都喜欢可重用的代码,我已经创建了很多。但!!!我没有将这些特定代码中的任何一个变成对象本身。也就是说,我没有把接口和实现的步骤放在心上。
当然,我的视图控制器等都有我的类。但是,为了省去 declare 和 alloc *init* 对象,所以我可以使用其中的方法,我只是将大量方法转储到 .inc 文件中 - 换句话说就是包含文件。例如,我有一种方法可以更改表格单元格的背景颜色或背景图像 a - 我会导入具有该方法的文件。
例如
-(void)defaultInactiveBackGroundForCell:(UITableViewCell *)cell
cell.backgroundView = [[UIImageView alloc] initWithImage:[[UIImage imageNamed:DEFAULT_INACT_CELL_BACKGROUND_IMAGE] stretchableImageWithLeftCapWidth:0.0 topCapHeight:5.0]];
// defaultInactiveBackGroundForCell
到目前为止一切顺利。
而且,我会在我的类文件(我的 .m 文件)顶部 #import 文件(包含上述代码)。在我的 willDisplayCell 委托方法中,我只需调用以下方法:
[self defaultInactiveBackGroundForCell:cell];
它会起作用的。
但在 Xcode 4.5 下它开始了大时代:
声明中的方法缺少联系人。
所以,我的问题是:有什么办法可以像过去使用 ANSI C 那样将#importing 代码放入类 .m 填充?
帮助?
【问题讨论】:
您是否尝试过使用#include 而不是#import? 是的,我做到了。这是我首先想到的。我完全糊涂了。我想不通。归根结底,导入或包含在实现@end中的方法代码应该没问题。但事实并非如此。 【参考方案1】:我想我知道问题可能出在哪里。我正在导入的方法已完全实现,也就是说,它们不是标头。这些完整的方法是在我的@implementation 行之后#imported 的。
我以 .h 文件的形式添加了方法规范,作为 @interface 和 @end 之间的私有类,作为 @implementation 中私有方法声明的一部分。
我可能没有意义,但本质上,Xcode 4.3.2 似乎很高兴在@implementation 和@end 之间导入所有这些方法。但 Xcode 4.5 完全没有。它也需要定义标题。
【讨论】:
【参考方案2】:我不确定它是否与您的“面向对象”有关或缺乏。从 Xcode 4.5 开始,最低部署目标是 iOS 4.3。在迁移到我的部署目标是 4.0 的 Xcode 4.5 后,我在最近的一个项目中遇到了头文件导入错误。将其更改为 4.3 修复了它。
【讨论】:
嗯 - 我已经检查过它实际上设置为 5.1。将其设置为 6.0 会导致类似的错误。该错误似乎表明正在导入的 cod 应该在接口中具有相应的标头,因此存在大量“方法声明中缺少上下文”错误。将其设置为 4.3 会删除所有这些错误,但会导致指示 ARC 弱引用的错误? 这里没有人要补充的吗?我真的是在抓稻草?以上是关于IOS 6.0 xcode 4.5 编译错误#import 代码保存在类外的文件中的主要内容,如果未能解决你的问题,请参考以下文章
对 iOS 5.0 和 iOS 6.0 使用 XCode 4.5 的困惑
UITableView 不再使用 xCode 4.5 滚动,部署在 5.x 或 6.0
facebook SDK3.1 和 Xcode 4.5 链接器错误