7

在询问之前我不想放弃,因为这是任何 Java/.Net IDE 中的基本功能。编译器告诉我:

Incomplete implementation of class...
Method definition for '-someMethod:' not found

但是单击、右键单击、祈祷和谷歌搜索并没有让我自动创建一个方法存根。Xcode 可以为我创建一个方法存根并将我带到那里吗?

如果不是,为什么会这样(除了“真正的程序员喜欢打字”)?

编辑:我认为这option-escape基本上为我解决了这个问题,但事实并非如此。它似乎并不知道我的类实现的所有(任何?)接口。

4

4 回答 4

4

这可能是向 Apple 提交功能请求的一个选项。通常,我会设计我的@interface 文件,然后将@interface 复制/粘贴到@implementation,从而将输入保持在绝对最低限度。

但是,如果能够单击警告并让 Xcode 简单地在 @implementation 的底部创建方法,那就太好了。

注意:在@implementation 之后保留分号是有效的

@interface PCStackValue : NSObject <NSCoding, NSCopying>
{
}

- (id) initWithDisplayRadix:(int) newRadix;

@end

@implementation PCStackValue

- (id) initWithDisplayRadix:(int) newRadix;
{
   … do something;
}
@end    
于 2010-03-03T14:18:18.740 回答
2

我不介意这种行为。一方面,实现不一定存在,因为它可能是动态的。我还使用#pragma mark - MyCategory对我的代码进行分类,并希望在源文件的特定位置实现。

但是,我同意 - 我不想键入存根本身。

您可以按方法进行。
转到您的实现文件并开始输入- 前缀并按 ESC,您应该会看到与前缀匹配的有效完成。您必须首先键入 - 或 + 才能使其工作,分别是实例方法和类方法。

有时你不知道你要实现的是什么!打开问题导航器,然后单击显示矩形。应该有一行说Method declaration here。点击它可以查看缺少实现的方法。

于 2011-12-20T22:57:07.857 回答
1

你要找的东西不存在。我只是使用自动完成(它通常对我有用)或复制/粘贴。

是什么让你认为 Xcode 会因为 eclipse 有一个特性?Eclipse 大约 10 岁,而 Xcode 大约 23 岁。复制的任何特征很可能是在另一个方向。

然而,它会提出一个很好的功能要求。也许在里面的空行上打开自动完成菜单@implementation .. @end可以给出一个尚未实现的方法列表。

NSObject但由于类别的原因,我不确定它在实践中的效果如何。自动完成菜单中可能确实有数千个“尚未实现”的方法。但它至少可以显示一些最有可能的情况。

看起来这个编译错误/警告也将是新的“修复它”功能的一个很好的候选者。

另外:学习打字更快:p

于 2011-12-20T19:33:46.260 回答
0

OP(我)正在谈论的是Java,其中接口是隐式的。但是,在 Xcode 中相同的情况是在任何接口中都没有定义任何方法。

AppCode 处理这种情况,Xcode 不处理(除非有人回答这个问题,但它已经存在了一段时间):

显示方法创建的 AppCode 弹出框

后来:人们已经回答了这个问题,但 Xcode 仍然没有这样做。

于 2012-03-19T06:06:11.843 回答