Objective-C方法实现细微差别

时间:2010-05-24 01:23:55

标签: objective-c xcode methods implementation compiler-warnings

我刚开始为iPhone开发,我正在学习Objective-C。我已经看到一些代码在类的@implementation方面实现了一个方法,如下所示:

-(void)myMethod; {
  // method body
}

令人感兴趣的是,在课程的@interface中没有提到myMethod。我尝试了一个示例项目,当我编译时,我从XCode得到一个警告,调用代码可能看不到myMethod。

有谁能告诉我发生了什么事?

谢谢!

2 个答案:

答案 0 :(得分:2)

它就像C中的函数一样。您不需要声明(即它不必在@interface中)但如果没有声明,则之前的任何代码方法定义将生成该警告。 方法定义后的代码不会生成警告。

答案 1 :(得分:0)

在ObjC中,方法调用是动态解析的(dynamic binding),这意味着当你执行[obj myMethod];时,ObjC运行时软件将在内部通过类方法 < / em>如果找到一个名为“myMethod”的话,它就会调用它。

也可以在运行时向对象添加方法。

@interface部分中的方法声明仅用于帮助编译器确定给定类可公开使用的方法。如果你只在@implementation中添加一个方法,编译器可能会警告你,但代码仍然可以编译并运行。

我有时会使用它来为我的对象添加内部方法,这些方法只能在其后的其他方法中调用,而不能从外部调用。虽然我不记得看到有关它的警告......确保调用代码放在之后方法实现在同一个文件中。