找不到方法定义...使用Xcode自动存根?

时间:2010-03-03 10:02:44

标签: objective-c xcode code-completion

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

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

但点击,右键单击,祈祷和Google搜索并没有让我自动创建一个方法存根。 Xcode可以为我创建方法存根并带我去那里吗?

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

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

4 个答案:

答案 0 :(得分:4)

这可能是向Apple提交功能请求的选项。通常情况下,我会设计我的@interface文件,然后将@interface复制/粘贴到@implementation,保持键入绝对最小值。

然而,能够点击警告并让Xcode在@implementation的botto上创建方法会很高兴。

注意:在@implementation

之后保留分号是有效的
@interface PCStackValue : NSObject <NSCoding, NSCopying>
{
}

- (id) initWithDisplayRadix:(int) newRadix;

@end

@implementation PCStackValue

- (id) initWithDisplayRadix:(int) newRadix;
{
   … do something;
}
@end    

答案 1 :(得分:2)

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

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

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

有时你不知道你要实施什么!打开“问题导航器”,然后单击显示矩形。应该有一行说明 Method声明在这里。单击它以查看缺少实现的方法。

答案 2 :(得分:1)

您所寻找的东西不存在。我只是使用自动完成(它通常适用于我)或复制/粘贴。

是什么让你认为Xcode会有一个功能只是因为eclipse有它? Eclipse大约有10年的历史,而Xcode大约有23年的历史。复制的任何功能很可能都是另一个方向。

然而,这将是一个很棒的功能请求。也许在@implementation .. @end内的空行上打开自动完成菜单可能会列出尚未实现的方法。

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

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

另外:学会更快地打字:p

答案 3 :(得分:0)

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

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

AppCode popover showing method creation

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