【问题标题】:Any ReSharper equivalent for Xcode?Xcode 的任何 ReSharper 等价物?
【发布时间】:2008-08-21 16:18:41
【问题描述】:

我是一个完整的 Xcode/Objective-C/Cocoa 新手,但我学得很快,并且真正开始享受掌握新语言、平台和范例的乐趣。

但有一件事是,我已经使用带有 R# 的 Visual Studio 这么久了,我有点被重构和完成等编码工具宠坏了,据我所知,Xcode 内置了一些相当有限的功能支持这个东西。

关于这一点,有没有人知道是否有任何插件或任何可用于 Xcode 环境的插件或任何东西,它们添加了编码助手,例如从类接口定义自动生成实现框架等?

我怀疑没有,但我想这无济于事。

【问题讨论】:

标签: objective-c xcode macos refactoring


【解决方案1】:

您听起来好像在寻找三个主要的东西:代码模板、重构工具和自动完成。

好消息是 Xcode 3 及更高版本具有出色的自动完成和模板支持。默认情况下,您必须通过点击转义键来明确请求完成。 (这实际上适用于所有NSTextViews;试试吧!)如果你想让补全自动出现,你可以去 Preferences -> Code Sense 并设置几秒钟后会自动出现弹出窗口。您应该找到 C 和 Objective-C 代码的良好完成,以及 C++ 的相当好的完成。

Xcode 还有一个可靠的模板/骨架系统供您使用。您可以通过编辑 -> 插入文本宏来查看默认可用的模板。当然,您不想用鼠标插入文本宏;这违背了这一点。相反,您有两种选择:

  1. 返回 Preferences,转到 Key Bindings,然后在 Menu Key Bindings 下,为您经常使用的宏分配特定快捷方式.我个人并不介意这样做,但我认识很多优秀的 Mac 开发人员都这样做
  2. 使用CompletionPrefix。默认情况下,几乎所有的模板都有一个特殊的前缀,如果您键入然后按转义键,将导致模板被插入。您可以使用 Control-/ 在完成字段之间移动。

    您可以在Crooked Spin 看到a full list of Xcode's default macros and their associated CompletionPrefixes

    您还可以添加自己的宏,或修改默认值。为此,请编辑文件/Developer/Library/Xcode/Specifications/{C,HTML}.xctxtmacro。语法应该是不言自明的,如果不是非常友好的话。

不幸的是,如果您沉迷于 R#,您会对您的重构选项感到失望。通过上下文菜单或按 Shift-Apple-J 在 Xcode 中提供基本重构。从那里,您可以提取和重命名方法,通过类层次结构提升和降级它们,以及一些其他常见操作。不幸的是,Xcode 和任何第三方实用程序都没有提供任何接近 Resharper 的东西,所以在这方面,你目前不走运。值得庆幸的是,Apple 已经在工作中展示了 Xcode 版本,它们极大地改进了重构功能,因此希望您不必等待太久,情况就会开始好转。

【讨论】:

  • 我自己是 XCode 的新手,我正在尝试听取您的建议,但我担心它已经过时或者我遗漏了一些东西。在 /Developer/Library/Xcode 下,我没有 Specifications 目录,如果我进行搜索,我找不到以 .xc​​txtmacro 结尾的文件。我正在运行 XCode 3.2.5 - 有什么建议吗?
  • 在每天使用 XCode 2 年后,在 IDE 理解您正在编写的代码和重构工具方面,它确实比 VisualStudio 的 resharper 和 Eclipse 落后一百万分。
  • 现在使用 Xcode 只会让我感到愤怒和沮丧。经过一年多的开发,它仍然过于频繁地崩溃,有大量的小故障和大量的 UI 漏洞。如果不是因为 AppCode,我在为 iOS 编码时会经常感到沮丧和愤怒。我已经在其中编码超过 4 年了,现在和当时一样糟糕。可能更糟。真可惜。
  • xCode 每 2 天在我身上崩溃一次,自动完成就可以了。我确实喜欢它制作的块,但就能够更快地编写代码而言,xCode 会阻止你这样做。 xCode 比 resharper 落后光年
【解决方案2】:

我很高兴地说 JetBrains 决定为 Objective-C 编码人员制作一个体面的 IDE。

它被称为 AppCode,它基于他们的其他工具,如 RubyMine 和 Resharper。它不是原生 Cocoa,但具有大量的原始重构能力。

http://www.jetbrains.com/objc/index.html

我已经开始将它用于我的主要 Objective C 项目并且我已经爱上了它。它仍处于起步阶段,但对于代码编辑和重构,它已经让 Xcode 大吃一惊了。

更新

它现在处于完全可用的速度。我已经全职切换到它,它仍然让我大吃一惊,与 Xcode 相比,重构和编码是多么惊人。它为您处理了这么多 - 自动导入,几乎无限的定制。它使 Xcode 看起来像一个玩具。

【讨论】:

  • +1 AppCode 的 IDE 在 Mac 平台上非常受欢迎。 XCode 需要竞争
  • 是的,我完全同意。很长很长一段时间以来,我一直对 Xcode 感到沮丧。 lapsusapp.co.uk/2011/04/15/appcode-the-answer-to-my-ide-woes
  • 我现在应该补充一点,我已经停止使用 AppCode - 它对于任何实用的东西来说仍然太慢了。但我期待它能够在速度竞赛和功能方面击败 Xcode!
  • 顺便说一句……现在是时候了。在发表此评论时,AppCode 为 V1.0.4,速度很快。在我看来,没有理由再在 Xcode 中编码了。 AppCode 要好得多。作为 V1 应用程序,它非常棒。
  • 克里斯——不。没有这样的。他们也没有为此道歉——他们并没有试图完全取代 Xcode,尽管我的 cmets 有点误导。在我看来,IB 本身就很好——这是必须变得更好的事情的编码方面。 AppCode 的设计目的是让您可以在打开 Xcode 的同时打开同一个项目,并且两者可以一起工作……好吧,可以一起工作。 :)
【解决方案3】:

Xcode 内置了针对 C 和 Objective-C 的重构。只需选择您想要重构的内容,从菜单栏或上下文菜单中选择“重构...”,您将获得一个窗口,其中包括可用的重构和预览区域。

Xcode 目前没有公开的插件 API;如果您希望 Apple 启用特定类型的插件,请在 Bug Reporter 中提交增强请求。这样,Apple 就可以计算和跟踪此类请求。

但是,您可以使用诸如Accessorizermogenerator(最新版本为mogenerator 1.10)之类的第三方工具来加快各种开发任务。 Accessorizer 可帮助您为类创建访问器方法,而mogenerator 为使用 Xcode 建模工具建模的 Core Data 托管对象类进行更高级的代码生成。

【讨论】:

    【解决方案4】:

    众所周知,Accessorizer 不仅仅生成访问器(1.0 和 2.0 的属性),它还生成用于持久化非标准属性的 Core Data 代码,用于自定义对多关系的 NSSet 访问器。

    事实上,Accessorizer 将帮助您提供 init、keypath、keyed-archiving、索引访问器、无序集合访问器,例如 NSSet、copyWithZone、KVO、key-validation、singleton overrides、dealloc、setNilForKey、non - 标准属性持久性(核心数据)、锁定、headerdoc、将方法转换为选择器、NSUndoManager 方法等等。

    【讨论】:

      【解决方案5】:

      我在 Xcode.app 包中找到了一些 xtmacro 文件: /Developer/Applications/Xcode.app/Contents/PlugIns/TextMacros.xctxtmacro/Contents/Resources

      已安装 Xcode 版本。 3.2.5.

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-11-09
        • 1970-01-01
        • 1970-01-01
        • 2015-05-19
        • 1970-01-01
        • 2011-08-29
        • 2011-07-22
        相关资源
        最近更新 更多