Xcode 4:自动完成&跳转到我的Xcode 3项目中的定义

时间:2011-03-11 15:41:06

标签: xcode autocomplete xcode4

我的项目是在Xcode 3中创建的,我在Xcode 4中打开它并注意以下内容:

  • '跳转到定义'不再适用于我自己的符号(但是UI *甚至TT *符号都可以正常工作!)
  • 自动完成/'代码感'与Xcode 3一样糟糕,即它暗示一切
  • 我的项目类没有显示在类导航器中(同样,系统和Three20类确实显示出来了!)

创建 Xcode 4项目时,这些功能执行似乎有效。不幸的是,唯一的解决方法似乎是重新创建项目并重新导入所有内容。这个项目太大了!

我尝试过的事情:

  • 删除管理器中的派生数据
  • 清洁项目
  • 同时安装Xcode 4 Gold Master和最终版本

更新

  • 此错误已在Xcode 4.0.1中解析

15 个答案:

答案 0 :(得分:67)

窗口菜单上:

  1. 组织者
  2. “项目”标签
  3. 您的项目
  4. 删除派生数据
  5. 重新启动Xcode
  6. 其他答案的一点建议:

      

    在步骤4之后,不要重建项目,只需重新启动Xcode。

答案 1 :(得分:16)

当我丢失xcodes超级好的代码提示时,对我有用的是:

窗口(菜单) - >管理器(菜单) - >项目(标签)

然后

按删除衍生数据(这与转到文件夹并手动删除相同)

但是!!!!! 在此步骤中不要重建但关闭xcode并重新打开项目。这对我有用。

答案 2 :(得分:7)

我今天在XCode 4最终版本中遇到了同样的问题,使用了我的旧XCode 3项目。该问题与XCode创建的符号索引有关。它应该自动为你创建一个新索引,但在XCode 4中似乎需要很长时间。一个可能的解决方案是转到〜/ Library / Developer / Xcode / DerivedData并删除旧索引。重新启动XCode,您应该看到它编制索引。对于“跳转到定义”,您可以按住方法或类名称上的命令和鼠标,并且应该看到蓝色下划线,如超链接。然后你可以点击它跳转到定义。

答案 3 :(得分:7)

编辑: 看来,如果你有任何自定义标题搜索路径来支持多个目标与共享代码XCode 4索引将断开,然后助手和codesense与它一起。我已将此作为#ID 9182099与Apple一起提出。还有一个问题是,如果项目全局和目标特定构建设置之间存在任何冲突设置,则索引将无法正确完成。确保您的构建设置一致。

我刚刚在一个非常大的多目标商业项目中遇到过这个问题。作为额外的痛苦,所有xib文件都不会在助手视图中显示控制器,并且子类/超类/兄弟/类别助手视图都不会起作用。

经过大量搜索和实验删除索引等后,我被迫创建一个新的空项目并重新导入所有内容。我知道你说你的项目太大了,但我不认为还有其他选择。最后,我花了大部分时间完全迁移我的项目。我想你可以坚持在未来的版本中解决问题,但我现在选择咬紧牙关,从新功能提高生产力中受益。

为实现这一目标,我创建了一个新的“空”项目,然后手动重新创建了我需要的目标。然后我删除了新目标的源文件和.plist文件,让我再次使用我需要的三个目标的空项目。

然后我根据需要一次选择“添加文件..”到项目一个文件夹链接目标。我停止并构建每个目标,因为它被导入以处理最新的clang给我的任何编译器错误。

如果您有一个未映射到文件系统文件夹结构的复杂组层次结构,那么您将需要在导入后重新创建组,或者经历将所有文件移动到子文件夹并重新指向引用的痛苦过程在XCode中。

您还需要仔细检查目标中的任何自定义构建设置,并重新链接您包含的任何库。另外,请确保从目标链接中删除任何批量导入的.plist文件。

很抱歉,如果这不是您所希望的答案。

答案 4 :(得分:4)

http://three20.info/article/2011-03-10-Xcode4-Support为我工作。特别是删除了three20的Build目录。奇怪的是,即使所述构建是在xcode4中制作的,它仍然有用。 CodeSense在删除了three20 build目录的那一刻开始工作,我甚至不需要重新编译或重新加载项目。

答案 5 :(得分:2)

这对我有用:

  • 打开您的Xcode项目。
  • 在项目目录中打开命令提示符并键入:

    touch MyProject.xcodeproj/project.pbxproj

  • 观看语法着色,其他内容在您眼前修复。

  • 如果项目方案重置为iOS项目的“我的Mac”,请重新打开项目(或调整项目设置)。

答案 6 :(得分:2)

我通过删除管理器中的派生数据,运行touch MyProject.xcodeproj/project.pbxproj并重新打开项目来解决问题。重新打开后,它开始编制索引,然后又重新开始工作。

答案 7 :(得分:1)

在我们的案例中,罪魁祸首证明是三个图书馆的旧版本。为了让项目有效,我不得不:

  1. 从项目中删除对three20的所有引用
  2. 按照http://three20.info/article/2011-03-10-Xcode4-Support
  3. 上的说明操作

    安装新库后,xcode4会自动重新编制索引。代码完成,跳转到定义,甚至现在重构所有工作。使用Xcode的Joy(tm)回来了! :)

    更一般地说,任何将头文件放入BUILT_PRODUCT_DIR的库都可能有类似的问题。

答案 8 :(得分:1)

在我的XCode 4设置中,100%可重复设置用户标题搜索路径将破坏代码,特别是"跳转到定义",重启后。我创建了一个新项目,将我的帮助库添加为子项目。如果我使用用户标题搜索路径(递归)包含标题,我可以编译,但自动完成/导航被破坏。

删除标题搜索路径,关闭项目并重新打开,再次修复它。

答案 9 :(得分:1)

在一些地方也添加了这个评论,所以也许Google果汁会帮助程序员重新启动并运行......但无论如何,我发现你只是在{{touch上使用YourAppName-Prefix.pch命令1}}文件它将获得语法高亮/着色和代码完成/跳回而无需删除所有派生数据或重新启动Xcode。我在.bashrc文件中将其设为别名。

alias pch_touch='touch /path/to/your/apps/Prefix.pch'

. ~/.bashrc

在触摸pch文件的大约1-2秒内,语法着色重新开始,这是一个符号代码完成/跳跃现在也将起作用。一些令人遗憾的强大工具让一些令人敬畏的强大工具因一些元数据/有状态错误而受到贬低,但是你会去。至少它让你恢复正常运行并且不再浪费你的时间。

答案 10 :(得分:0)

我在这里遇到了同样的问题。没有定义链接,代码检测或语法突出显示。 删除派生数据不起作用,甚至创建一个新项目也没有任何区别。 虽然它可能不是同样的问题,清理构建设置(以便项目和目标之间没有冲突)像Rick说的那样解决了它(虽然我仍然不知道哪个设置是/引起了这个问题。)

答案 11 :(得分:0)

关于“跳转到定义”,尝试单击Scheme选择按钮(显示构建,设备和模拟器列表的窗口右上角附近的按钮),然后在代码编辑器中单击返回并尝试按住Command键并单击或“跳转到定义”。

我最近发现,只要“跳转到定义”停止工作,我就可以这样做,并且它会再次运行一段时间。这不是一个修复,但一直是一个有用的解决方法。

答案 12 :(得分:0)

我不知道它是否对某人有帮助,但是当我切换到Xcode 4时,我的C ++项目的代码索引被破坏了。我还没有切换到Lion,所以我仍然拥有4.02版本。在Xcode中创建项目时,我会使用外部构建选项,但这并未将HEADER_SEARCH_PATHS正确添加到项目中。我发现使用:

   cmake -G Xcode . 

生成xcode项目,正确设置此变量并启用整个项目的索引。

答案 13 :(得分:0)

我有同样的问题。我有一个带有一堆ViewControllers的项目,它扩展了一个我正在调用BaseViewController的类。我将以下代码添加到BaseViewController.h并且语法着色和代码自动完成破坏了!即使重复删除派生数据,问题仍然存在。我简直不敢相信!!

@implementation UIView (FindFirstResponder)
- (UIView *)findFirstResponder
{
    if (self.isFirstResponder) {
        return self;
    }

    for (UIView *subView in self.subviews) {
        UIView *firstResponder = [subView findFirstResponder];

        if (firstResponder != nil) {
            return firstResponder;
        }
    }

    return nil;
}
@end

注释掉这段代码解决了我的问题!我有XCode版本4.4.1(4F1003)

答案 14 :(得分:0)

this comment here我能够用我的项目调试类似的问题,它似乎是一个坏的-w标志,clang预处理器无法正确识别。基本上,正在运行

defaults write com.apple.dt.Xcode IDEIndexingClangInvocationLogLevel 3

终端中的

增加了索引器的详细程度,应该可以帮助您跟踪问题。运行Console.app并搜索IDEIndexingClang