40

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

有一件事是,长期以来一直使用带有 R# 的 Visual Studio,我有点被重构和完成等编码工具宠坏了,据我所知,Xcode 有一些相当有限的内置支持东西。

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

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

4

5 回答 5

39

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

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

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

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

    您可以在Crooked Spin中查看Xcode 的默认宏及其关联CompletionPrefixes的完整列表。

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

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

于 2008-08-21T20:33:18.150 回答
23

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

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

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

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

更新

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

于 2011-04-11T16:53:38.373 回答
5

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

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

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

于 2008-08-21T20:04:09.407 回答
3

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

事实上,Accessorizer会帮助你提供 init、keypath、keyed-archiving、indexed accessors、无序集合访问器如 NSSet、copyWithZone、KVO、key-validation、singleton overrides、dealloc、setNilForKey、非标准属性持久化( Core Data)、锁定、headerdoc、将方法转换为选择器、NSUndoManager 方法等等。

于 2009-02-18T20:58:52.213 回答
0

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

已安装 Xcode 版本。3.2.5。

于 2010-12-14T22:13:41.053 回答