Xcode没有构建更改的文件

时间:2014-06-04 21:45:35

标签: ios objective-c xcode

这让我发疯了。我一直在研究UIImage类别,我刚刚更新到使用Xcode 5.1。问题是,在我对文件进行更改之后,该类别没有被编译,并且只有在64位设备/模拟器上才能获得。我尝试从设备中删除应用程序,清理,清理构建文件夹,删除派生产品文件夹以及所有之前的应用程序。没有什么工作!任何建议将不胜感激!


更新6/19:

所以我解决这个问题的方法是更改​​方法的签名。方法是:

- (UIImage *)imageResizedTo:(CGSize)size scale:(CGFloat)scale

我改为:

- (UIImage *)imageWithSize:(CGSize)size scale:(CGFloat)scale

我在方法中添加了NSLog语句,它们可以在32位设备和64位模拟器上打印,但不能在64位设备上打印。我添加了另一个具有相同签名的类别,并且工作正常,但无论出于何种原因,我都无法让Xcode识别相关类别中的更改,并且只能使用这一方法!断点在函数内部不起作用,但它们在同一类别的其他方法中起作用。

我还查看了构建日志,并说它编译了armv7和armv7s的类别。

总结:

没有解决问题的事情:

  • 删除引用并将其重新添加到项目中。
  • 更改方法的主体并重新构建。
  • 更改项目设置中的有效体系结构。
  • 清洁产品/构建文件夹/派生数据。
  • 删除应用并在设备上重新运行。

做了解决问题的事情:

  • 更改方法签名。
  • 复制方法的主体并将其放入呼叫者的身体中。
  • 使用相同的方法签名和正文为项目添加另一个类别。

我仍然真的想知道这是怎么回事。大多数情况下,我只是想知道为什么会发生这种情况,这很奇怪!

3 个答案:

答案 0 :(得分:2)

转到目标设置>构建阶段>编译源代码 并确保您的类别的实现文件存在于该列表中。如果没有,则通过点击“+”按钮手动添加。

答案 1 :(得分:1)

我很久以前就遇到过类似的错误以前的Xcode版本,除非我每次都清理目标,否则代码的更改不会被编译和链接。

一个解决方法是在{1}}脚本构建步骤中强制Xcode认为存在需要重建和链接代码的更改。

答案 2 :(得分:1)

您的源文件是否在"引用" XCode中的文件夹?您知道,因为该文件夹将显示为蓝色而不是黄色。如果是这样,XCode当前(并且很长一段时间)中引用的文件夹有一个错误,其中的内容中的更改内容似乎没有被注意到,除非最高级别的父级蓝色文件夹已将其更改为mod-date 。这是一个例子

GrandParent Dir (Yellow/Non-referenced)
|
    Parent Dir (Blue)
    |
         File1.txt
         Child Dir (Blue)
         |
             File2.txt

所以在那个人为的例子中,如果你触摸File1.txt,除非" Parent Dir"否则它不会被注意到。也被感动了。如果你触摸File2.txt,它就不足以触及" Child Dir" ...你必须触摸" Parent Dir"代替!

您可以通过执行以下操作来测试:

touch -cm parent_dir

如果有效,那么你知道这就是问题所在。很多用户都写了一个脚本来做"触摸"需要完成,然后将该脚本添加到Xcode以在正确的构建阶段运行。