这让我发疯了。我一直在研究UIImage类别,我刚刚更新到使用Xcode 5.1。问题是,在我对文件进行更改之后,该类别没有被编译,并且只有在64位设备/模拟器上才能获得。我尝试从设备中删除应用程序,清理,清理构建文件夹,删除派生产品文件夹以及所有之前的应用程序。没有什么工作!任何建议将不胜感激!
所以我解决这个问题的方法是更改方法的签名。方法是:
- (UIImage *)imageResizedTo:(CGSize)size scale:(CGFloat)scale
我改为:
- (UIImage *)imageWithSize:(CGSize)size scale:(CGFloat)scale
我在方法中添加了NSLog语句,它们可以在32位设备和64位模拟器上打印,但不能在64位设备上打印。我添加了另一个具有相同签名的类别,并且工作正常,但无论出于何种原因,我都无法让Xcode识别相关类别中的更改,并且只能使用这一方法!断点在函数内部不起作用,但它们在同一类别的其他方法中起作用。
我还查看了构建日志,并说它编译了armv7和armv7s的类别。
没有解决问题的事情:
做了解决问题的事情:
我仍然真的想知道这是怎么回事。大多数情况下,我只是想知道为什么会发生这种情况,这很奇怪!
答案 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以在正确的构建阶段运行。