在Visual Studio中,如果我定义一个类来实现一个接口,例如
class MyObject : ISerializable {}
我可以右键单击ISerializable,从上下文菜单中选择“实现接口”,并查看我的类定义中出现的相应方法。
class MyObject : ISerializable {
#region ISerializable Members
public void GetObjectData(SerializationInfo info,
StreamingContext context)
{
throw new NotImplementedException();
}
#endregion
}
在Mac上的Xcode中是否有类似的功能?我希望能够以这种方式自动实现协议。也许使用生成的可选方法但注释掉了。
答案 0 :(得分:22)
XCode目前不支持这种自动化。但是:使用协议引导代码的简单方法是选择单击类声明中的协议名称
@interface FooAppDelegate : NSObject <NSApplicationDelegate,
NSTableViewDelegate> {
快速打开定义协议的.h文件。从那里,复制并粘贴您感兴趣的方法。这些标题往往得到很好的评论,这有助于确定哪些方法可以安全地忽略。
答案 1 :(得分:6)
我还没有在Xcode中看到过这个功能。 但似乎有人可以在Scripts&gt;内部编写一个名为“Place Implementor Defs on Clipboard”的新用户脚本。代码。
您没有发现这有用。
答案 2 :(得分:5)
目前Xcode中没有这样的重构。
如果您愿意,请提交enhancement request。
答案 3 :(得分:2)
我知道这个帖子有点旧,但我想知道同样的事情,发现了这个问题。
就我而言,我在接口(.h)中定义了一个属性,我想在实现(.m)中合成它。我还需要实现接口中定义的方法。是的,Xcode有助于其他人提到,但现代IDE为我们经常做的事情提供了这些生产力增强。看起来这仍然不是Xcode 4.3.3中的一个功能。但是,该功能在JetBrains' AppCode中可用。我只涉及试用,但它似乎一次只能有一个属性或方法,而不是整个界面,如Visual Studio。
答案 4 :(得分:1)
Xcode可以帮助你按照协议方法,假设你有这样的协议:
@protocol PosterousWebsitesDelegate <NSObject>
- (void)PosterousWebsitesLoadSuccess:(PosterousWebsites*)websites;
@end
<。>在.m文件的@implementation部分,您可以开始编写方法的名称,然后按ESC键自动完成方法/选择器的签名:
-(void)Poste (...press ESC...)
Xcode将自动完成@protocol方法的完整签名,使用TAB来确认代码。
如果你真的想要学习OSX / iOS开发,我建议你阅读“XCode 3 Unleashed”,这本书真的帮助我深入了解Xcode,我知道VS:)
答案 5 :(得分:1)
答案 6 :(得分:0)
Macrumors也对此进行了讨论。有一些苹果脚本的链接。我实际上没有尝试过这些。