任何 ReSharper 等同于 Xcode 吗?

Any ReSharper equivalent for Xcode?

提问人:Shaun Austin 提问时间:8/22/2008 最后编辑:JonasShaun Austin 更新时间:1/26/2012 访问量:12740

问:

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

不过,有一件事是,在将 Visual Studio 与 R# 一起使用这么长时间后,我有点被重构和补全等编码工具宠坏了,据我所知,Xcode 对这些东西的内置支持相当有限。

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

我怀疑没有,但我想问不住。

Objective-C Xcode macOS 重构

评论

3赞 Kb. 4/22/2011
应用代码 jetbrains.com/objc
0赞 Nick Turner 6/6/2013
没有,没有。也许 50% 的副驾驶

答:

5赞 Chris Hanson 8/22/2008 #1

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

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

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

40赞 Benjamin Pollack 8/22/2008 #2

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

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

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

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

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

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

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

评论

0赞 Joseph DeCarlo 11/25/2010
我自己是 XCode 的新手,我试图接受您的建议,但我担心它已经过时或我遗漏了一些东西。在 /Developer/Library/Xcode 下,我没有 Specifications 目录,如果我进行搜索,我发现没有以 .xctxtmacro 结尾的文件。我正在运行 XCode 3.2.5 - 有什么建议吗?
10赞 Mike S 3/31/2011
在连续 2 年每个工作日使用 XCode 之后,在 IDE 理解您正在编写的代码和重构工具方面,它确实落后于 VisualStudio 的 resharper 和 Eclipse 一百万分。
2赞 John Gallagher 6/21/2012
现在使用 Xcode 只会让我生气和沮丧。经过一年多的开发,它仍然经常崩溃,有大量的故障和大量的UI失误。如果不是 AppCode,我在为 iOS 编码时会经常感到不安和愤怒。我已经用它编码了 4 年多了,现在和当时一样糟糕。可能更糟。真是太可惜了。
1赞 Nick Turner 6/6/2013
xCode 每 2 天在我身上崩溃一次,自动完成就好了。我确实喜欢它制作的块,但就能够更快地编写代码而言,xCode 会阻止您这样做。xCode 落后 Resharper 光年
1赞 strangetimes 9/29/2022
不幸的是,在 2022 年的 Xcode 14 中,落后于 VS 的 Xcode 评级仍然如此。我离开 Resharper 已经 18 年了,Xcode 远不及 VS 当时能做到的 5%。
3赞 Kevin Callahan 2/19/2009 #3

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

事实上,Accessorizer 将帮助你提供 init、keypath、keyed-archiving、indexed accessors、unordered collections(如 NSSet、copyWithZone、KVO、key-validation、singleton overrides、dealloc、setNilForKey)、非标准属性持久性(Core Data)、locking、headerdoc、convert method to selector、NSUndoManager 方法等。

0赞 Igor Pchelko 12/15/2010 #4

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

已安装 Xcode 版本 3.2.5。

22赞 John Gallagher 4/12/2011 #5

我很高兴地说,JetBrains 已经决定为 Objective-C 程序员制作一个像样的 IDE。

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

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

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

更新

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

评论

6赞 Kb. 4/22/2011
+1 AppCode 的 IDE 在 Mac 平台上非常受欢迎。XCode 需要竞争
2赞 John Gallagher 4/26/2011
是的,我完全同意。很长一段时间以来,我一直对 Xcode 感到沮丧。lapsusapp.co.uk/2011/04/15/appcode-the-answer-to-my-ide-woes
0赞 John Gallagher 8/8/2011
我现在应该补充一点,我已经停止使用 AppCode 了——它仍然太慢了,无法实现任何实际操作。但我期待它能在速度竞赛和功能中踢 Xcode 的屁股!
2赞 John Gallagher 1/26/2012
Incidentally... that time is now. At the time of this comment, AppCode is at V1.0.4 and is fast. In my view, there's no reason to code in Xcode any more. AppCode is so much nicer. As a V1 application, it's mind-blowingly great.
1赞 John Gallagher 4/14/2012
Chris - nope. Nothing like this. They make no apologies for that either - they're not trying to totally replace Xcode, despite my slightly misleading comments to the contrary. In my view, IB is fine as it is - it's the coding side of things that had to get better. AppCode is designed so that you can leave Xcode open with the same project alongside and the two work... well, OK together. :)