来自Eclipse / Java背景,我最喜欢的功能之一是能够快速存根接口所需的所有方法。在Eclipse中,我可以从源菜单中选择“覆盖/实现”来为接口的任何方法生成存根方法。
我想在Objective-C中做同样的事情。例如,如果我声明一个实现'NSCoding'协议的类,我想让Xcode自动生成实现此协议所需的方法。令我感到沮丧的是,我正在尝试实施的每个协议都需要查找然后复制/粘贴所需方法的签名。
我一直试图找出这是否可行,但还没有找到任何有希望的东西。这在XCode中是否可行?
答案 0 :(得分:8)
我相信Accessorizer会做你想做的事。
答案 1 :(得分:7)
Accessorizer将为传递给它的ivars编写编码和解码方法(NSCoding协议和NSDocument归档)。它还将生成带有自定义前缀的字符串常量static或#define; copyWithZone:;以及其他需要的东西 - 所有这些都可以通过服务或工具栏中的简单快捷方式完成。 Accessorizer keyed archiving
答案 2 :(得分:6)
不是直截了当的回答,只是提示:
开箱即用的XCode不能。
但是AppCode可以。
它可以自动执行此操作(当然,在您允许的情况下)。
如果标记为@required
- AppCode 的某些协议方法会突出显示实施并建议实施此方法。
@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
如何使用?
答案 8 :(得分:0)
我知道这是一个老问题,但是如果你想总是看到最新的定义,只需点击相关课程并跳转到定义。这里列出了所有当前未弃用的功能,因此您不依赖第三方来保持最新状态。
答案 9 :(得分:0)
在我的情况下,下面的风格对我很有帮助,从某种意义上解决了我的问题。
假设您有以下方法声明:
+(DBManager*)getSharedInstance;
从实施文件开始输入+ ge,xcode将自动选择方法
+(DBManager*)getSharedInstance;