任何与Xcode相同的ReSharper?

时间:2008-08-21 16:18:41

标签: objective-c xcode macos refactoring

我是一个完整的Xcode / Objective-C / Cocoa新手,但我学得很快,真正开始喜欢掌握一种新的语言,平台和范例。

有一件事是,在使用Visual Studio和R#已经很长时间了,我已经被重构和完成等编码工具所破坏,据我所知,Xcode有一些相当有限的内置支持这些东西。

在那个注释中,有没有人知道Xcode环境中是否有任何可用于添加编码助手的加载项或其他内容,例如从类接口定义中自动生成实现框架等?

我怀疑没有,但我想它无能为力。

5 个答案:

答案 0 :(得分:39)

你听起来好像在寻找三件大事:代码模板,重构工具和自动完成。

好消息是Xcode 3及更高版本具有出色的自动完成和模板支持。默认情况下,您必须通过单击转义键显式请求完成。 (这实际上适用于所有NSTextView s;尝试一下!)如果您希望自动显示完成,您可以转到偏好设置 - > 代码感知并将弹出窗口设置为在几秒钟后自动显示。您应该找到C和Objective-C代码的良好完成,以及C ++的非常好的完成。

Xcode还有一个可以使用的实体模板/骨架系统。您可以通过转到编辑 - >来查看默认情况下可用的模板。插入文本宏。当然,您不希望用鼠标插入文本宏;这打败了这一点。相反,您有两种选择:

  1. 返回偏好设置,转到键绑定,然后在菜单键绑定下,为您经常使用的宏指定一个特定的快捷方式。我个人不打扰这样做,但我知道有很多伟大的Mac开发人员
  2. 使用CompletionPrefix。默认情况下,几乎所有模板都有一个特殊的前缀,如果您键入然后点击转义键,将导致插入模板。您可以使用Control- /在完成字段之间移动。

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

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

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

答案 1 :(得分:23)

我很高兴地说JetBrains决定为Objective-C编码器制作一个不错的IDE。

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

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

我已经开始将它用于我的主要Objective C项目,我已经爱上了。它还处于初期阶段,但是对于代码编辑和重构,它已经让Xcode消失了。

<强>更新

它现在处于完全可用的速度。我已经全职切换到它,它仍然让我感到震惊,如何将重构和编码与Xcode进行比较。它只是为您处理这么多 - 自动导入,几乎无限的自定义。它使Xcode看起来像一个玩具。

答案 2 :(得分:5)

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

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

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

答案 3 :(得分:3)

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

实际上,Accessorizer将帮助为您提供init,keypath,键控存档,索引访问器,无序集合的访问器,如NSSet,copyWithZone,KVO,密钥验证,单例覆盖,dealloc,setNilForKey ,非标准属性持久性(Core Data),锁定,headerdoc,转换方法到选择器,NSUndoManager方法等等。

答案 4 :(得分:0)

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

安装Xcode版本。 3.2.5。