Xcode:可以为Protocol接口所需的方法自动创建存根吗?

时间:2009-11-07 20:35:50

标签: objective-c xcode ide interface protocols

来自Eclipse / Java背景,我最喜欢的功能之一是能够快速存根接口所需的所有方法。在Eclipse中,我可以从源菜单中选择“覆盖/实现”来为接口的任何方法生成存根方法。

我想在Objective-C中做同样的事情。例如,如果我声明一个实现'NSCoding'协议的类,我想让Xcode自动生成实现此协议所需的方法。令我感到沮丧的是,我正在尝试实施的每个协议都需要查找然后复制/粘贴所需方法的签名。

我一直试图找出这是否可行,但还没有找到任何有希望的东西。这在XCode中是否可行?

10 个答案:

答案 0 :(得分:8)

我相信Accessorizer会做你想做的事。

答案 1 :(得分:7)

Accessorizer将为传递给它的ivars编写编码和解码方法(NSCoding协议和NSDocument归档)。它还将生成带有自定义前缀的字符串常量static或#define; copyWithZone:;以及其他需要的东西 - 所有这些都可以通过服务或工具栏中的简单快捷方式完成。 Accessorizer keyed archiving

答案 2 :(得分:6)

不是直截了当的回答,只是提示:

开箱即用的XCode不能。

但是AppCode可以。

它可以自动执行此操作(当然,在您允许的情况下)。

如果标记为@required - AppCode 的某些协议方法会突出显示实施并建议实施此方法。

example

@optional方法也可以自动实施(快捷方式:控制 + )。

答案 3 :(得分:1)

您可以使用AppleScript,Perl,Python,Ruby或脚本菜单中的任何其他脚本语言为脚本菜单项创建脚本。

您可以将插入点放在.m文件中,让脚本查找相应的.h文件。找到支持的协议等等......

MacTech在2007年发表了一篇文章Xcode Menu Scripts

答案 4 :(得分:1)

Xcode 3.2将自动完成已知的方法实现。换句话说,如果方法在某处声明(例如,在协议中),当您开始在.m文件中键入它时,Xcode 3.2将自动为您完成方法签名。这不是你要求的,但它非常方便。

答案 5 :(得分:1)

我也在寻找一种为头文件中的协议生成方法存根的方法。我检查了Accessorizer,它看起来是一个方便的工具,但除非我错过了一些东西,我没有找到一种方法来让它为协议生成方法存根。

Eric,如果您找到了其他解决方案,请发布您找到的内容。令我惊讶的是,XCode还没有内置到IDE中。

答案 6 :(得分:1)

由于接受的答案的给定链接不再起作用(并被重定向到广告),here's关于如何使用存取器来创建协议方法存根的另一个很好的解释。

答案 7 :(得分:0)

基于AllanCraig的“从变量声明创建@property,@synthesize& dealloc”ruby脚本,我做了一个从接口生成实现存根:http://pastebin.com/4T2LTBh6

如何使用?

  • 在XCode(Shell脚本)上设置脚本并为其指定快捷方式(例如CMD + 5)。
  • 从您要在其中生成实施的接口文件中选择行,然后按热键。
  • 您的.m将包含您选择的方法。

答案 8 :(得分:0)

我知道这是一个老问题,但是如果你想总是看到最新的定义,只需点击相关课程并跳转到定​​义。这里列出了所有当前未弃用的功能,因此您不依赖第三方来保持最新状态。

答案 9 :(得分:0)

在我的情况下,下面的风格对我很有帮助,从某种意义上解决了我的问题。

假设您有以下方法声明:

+(DBManager*)getSharedInstance;

从实施文件开始输入+ ge,xcode将自动选择方法

+(DBManager*)getSharedInstance;