Xcode 4代码感觉不起作用


77

我正在Xcode 4中运行一个“旧的” Xcode 3项目,代码意义不适用于我自己的类。我尝试了以下方法:

  • 清理/重建
  • 删除衍生数据
  • 安装4.3文档
  • 重新开始

没有任何运气。

有时,代码含义有效,但大多数情况下,我只是获得“没有完成”。


1
您是否安装了昨天发布的4.0.1更新?在Fixed a bug that prevented indexing of some projects从发行说明听起来像它可能与你的问题做。
Matthias Bauch 2011年

安装了4.0.1,删除了旧索引(派生的数据),进行了清理,重建,不幸的是仍然如此。我认为问题与旧3项目的更新有关,我在xcode 4中创建了一些新项目,它们似乎可以正常工作。
Okku 2011年

仅作更新,今天一切似乎都工作得更好。毕竟4.0.1更新确实可以解决问题。
Okku 2011年

抱歉地说,这开始是一场闹剧,xcode代码意义无法按预期运行。
Okku 2011年

我有完全一样的问题。XC4中的3.2项目。4.0.1没有修复它。还尝试了所有其他“快速”修复选项(清理,删除派生数据,安装doccs等)无济于事。可悲的是,我认为目前唯一的选择是在XC4中生成新项目并复制所有文件-涉及大型项目的主要麻烦:(
2011年

Answers:


128

试试这个:

打开管理器,然后打开项目选项卡。

清除“派生数据”。Xcode应该重新索引您的项目,然后代码感知就可以了。至少对我有用。


2
我尝试了一下,但没有帮助(正如我在问题中已经提到的那样)。我不再有这个问题,因为我不再使用xcode了,我改用了应用程序代码。
Okku 2011年

5
这为我解决了问题。最新的Xcode版本4.3.1(4E1019)。谢谢。
艾略特(Elliot)2012年

2
这不能解决我的问题,请查看@Chris解决此问题的方法,很好的解决方案
Raj

@Saikat,它可以帮助我。谢谢!
alloc_iNit 2012年

108

我知道这很晚,但仅供参考:http : //sealedabstract.com/code/when-xcode-4s-code-completion-autocomplete-breaks/

  • 关闭项目,使XCode仍在运行。

  • 打开XCode的Organizer窗口,转到Projects选项卡,选择正确的项目,然后单击“ Derived Data”旁边的Delete按钮。

  • 退出XCode。

  • 在Finder中导航到项目的.xcodeproject文件。右键单击,选择“显示包装内容”。

  • 保留project.pbxproj文件,但删除project.xcworkspace文件,任何.pbxuser文件以及整个userdata文件夹。

  • 在XCode中打开项目。您将看到XCode在大约10至60秒的CPU使用率上处于较高水平,具体取决于项目的大小。活动窗口将显示“索引”

  • 当您的CPU峰值恢复正常时,代码完成功能将再次起作用。

那里有很多删除操作,因此请小心,但这绝对对我有用。


3
感谢您的链接。物有所值,我发现不必显式删除任何文件即可在Xcode 4.2.1中正常工作。通过管理器窗口删除“派生数据”(即您的前三个项目符号)就足够了。谢谢。
PixelCloudSt

这对我有用,但是,请注意,在删除任何其他文件之前,您应该尝试打开管理器窗口并清除DerivedData并先退出并重新打开Xcode。
皮质

2
从.xcoeproject捆绑包中删除适当的文件结束了我的痛苦。
卢卡斯2012年

删除“派生数据”对我来说通常可以解决此问题,但是+1可以为所有情况提供明确的指导!
MechEthan 2012年

1
仅清除派生数据并不能解决问题,但是删除您在.xcodeproject中建议的文件即可。举手击掌!
布伦登

26

我一直在这样做,它为我工作了很多次(在尝试了以上所有方法之后)。

编辑:现在,我只是按下空格,退格键(Mac版本)并进行重建...效果很好。然后,记住滚动(有时直到滚动到某个位置才会显示颜色)

  1. 找到您的前缀文件:“ ProjectName_prefix.pch”。
  2. 注释掉一些行。(基本上将其更改)
  3. 构建项目,无论是否失败都无关紧要。
  4. 取消注释。
  5. 重新构建。

我敢打赌,第2步(修改前缀)是它的作用,但实际上,这些使您重新运行。突然,所有事物都神奇地重新着色并完成功能。

祝您好运,如果不能解决问题,请尝试对您的依赖项pch文件(three20或FB api)进行此操作


是否默认包括这些?我正在使用xocde 5,找不到它。
布伦2014年

是的,同样的事情对我有用。即使在Xcode 6中仍在发生
Beau Nouvelle 2014年

当我改为使用“ iOS设备”而不是模拟器时,我的Xcode失去了意义。没有大量的派生数据清除工作。我完全没有希望地尝试了这种方法,并且有效!
2014年

@Bren PCH文件默认没有使用XCode。
斯蒂芬·J

5

清除“派生数据”仅对我临时有效。我必须这样做,然后每天像3-4次一样重新启动Xcode,以使代码感知再次起作用。

我发现真正的原因是在目标的构建设置中。我将所有内容从标题搜索路径移动到了用户标题搜索路径,它是固定的。就我而言,我正在使用的框架是RestKit。

顺便说一句,我想出这个是因为我要在项目中添加另一个项目(QuickDialog),而我很好奇它使用的是用户标题搜索路径,而不是标题搜索路径这是它们之间的区别。


啊!我一直在使用RestKit,但只遇到了麻烦。我将再次检查是否是问题所在,然后在此处报告。
makdad

不。我以为会……似乎有所帮助,但是不,我觉得我只是在较少地删除派生数据。
makdad 2012年

之后,对于不同的构建,我还不得不多次删除导出的数据。在那之后,我再也不需要做。但是,是的,我仍然不知道它是如何工作的……
Hlung 2012年

这似乎对我有用。我使用的是静态库,这种自动完成功能使我发疯
Edward Ashak

4

您可以通过更改构建设置来解决该问题,例如PreCompile Prefix Headers:NO


3

仅供参考,如果一个文件没有代码意义,而您项目的其余部分却具有代码意义,请检查该文件是否已添加到目标中。一旦做到这一点,我便在该文件中恢复了代码意识。


1
还要删除@end字下的所有注释块。这是我的问题。
GeneCode '02

2

已经有很长时间了,但是答案只是将代码移到新文件夹中,并且代码含义现在应该可以正常工作。

这是在我添加了一个新的Objective-C类时发生的,并且代码意义仅在新添加的.m和.h文件上不起作用(在本文中XCode 4最新更新中)。


2

关闭所有xcode窗口

从xcode> window> organizer删除所有项目,然后重新启动项目。现在它将正确地感测和索引您的项目。


1

我在这里详细写过

基本上,我的解决方法是本地化。我从xcode 3.2.5升级到xcode 4,然后用内置的界面生成器搞砸了,并意外打开了XIB文件的本地化,这将我的源文件放在了en.lproj目录中。将它们移回Classs文件夹后,它可以完美运行。


坦克,但这与我的问题不符,我的所有课程都遇到了麻烦,不,我的本地化目录中没有源代码。
Okku 2011年

您是否尝试过升级到xcode 4.0.2。我认为它更稳定
zakishaheen 2011年

0

再次,为了帮助其他人解决此问题,在我的情况下,发生在升级到Xcode 4.3时。

当然,我尝试了本文中提供的解决方案,但没有一个起作用。但是在Finder中移动项目位置的建议带来了一些Code Sense,但这些建议没有任何意义。

我最终删除了我的项目,然后从git存储库中将其重新克隆了。


0

每当我的Xcode的代码检测停止工作时,我都会在后台打开第二个项目(通常在我第一次打开该项目时起作用,但是一段时间后代码检测不再起作用)。所以我要做的是在Xcode中打开第二个项目。Xcode将开始为第二个项目建立索引,神奇的是我的主项目的代码意义又回来了。

在Lion上运行Xcode 4.3.1

希望这对某人有帮助。


0

这里的评论中,我最终可以调试问题,这似乎是一个不好的-w标志,表明clang预处理器无法正确识别。基本上是跑步

defaults write com.apple.dt.Xcode IDEIndexingClangInvocationLogLevel 3

Terminal中的ins增加了索引器的详细程度,应该可以帮助您查找问题。打开Console.app并从Xcode查找消息,搜索字符串IDEIndexingClangInvocation帮助我找到了它们。


0

对我来说,发生这种情况仅仅是因为该文件没有目标成员身份。如果前几个答案对您不起作用,请转到您的.m文件(可能是您遇到问题的该文件),打开“实用工具”视图(“编辑->实用工具->显示文件检查器”),然后在“目标成员资格”,请检查该文件所属的目标。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.