Objective c 目的-c申报方法

Objective c 目的-c申报方法,objective-c,syntax,methods,Objective C,Syntax,Methods,可能重复: 我假设在objective-c中,类方法需要在.h文件中声明,使其公开可见,或者在.m文件中使用类扩展名声明,使其更私有 我认为没有首先声明方法,xcode会抱怨,但是我在没有声明的情况下向我的主AppDelegate类添加了一个方法,并且一切正常 我混淆了哪一部分,我应该声明类的所有方法,还是可以不声明该方法仅由该类使用,而不在其他地方使用???在.h文件中不需要声明所有类方法。 仅在.h文件中声明您希望其他人公开访问的那些方法。Objective C是一种非常动态的语言,它在运

可能重复:

我假设在objective-c中,类方法需要在.h文件中声明,使其公开可见,或者在.m文件中使用类扩展名声明,使其更私有

我认为没有首先声明方法,xcode会抱怨,但是我在没有声明的情况下向我的主AppDelegate类添加了一个方法,并且一切正常


我混淆了哪一部分,我应该声明类的所有方法,还是可以不声明该方法仅由该类使用,而不在其他地方使用???

在.h文件中不需要声明所有类方法。
仅在.h文件中声明您希望其他人公开访问的那些方法。

Objective C是一种非常动态的语言,它在运行时解析方法。这就是为什么我们向对象发送消息而不调用方法(例如在C++中)。所以,若编译器并没有看到方法声明,并不意味着对象在运行时找不到它


因此,您可以在任何地方(在任何文件中,甚至在不同的库中)定义ObjC方法。程序编译和链接的对象。ObjC运行时可以找到所有这些对象。

您仍然可以声明方法。要么在.h文件中

@interface ViewController : UIViewController
-(void)myMethod;
@end
或者在.m中的私有接口中

#import "ViewController.h"

@interface ViewController ()
-(void)myMethod;
@end

这只是部分正确,至少在使用ARC编译时是这样。要编译
[myInstance someMethod]
ARC编译器需要
someMethod
的签名,因此您必须在某处声明原型。这是否意味着我不必定义方法。我应该在什么时候定义文档中显示的方法,什么时候可以不定义它all@Martin这就是为什么我不喜欢ARC:)您必须始终定义方法。您可以不声明它的原型。至于我,我总是在.h文件中声明公共方法,在.m文件中声明私有方法,然后在单个@implementation中定义它们block@Ben_hawk:查看您的问题“可能重复”的公认答案。使用当前的Xcode版本,您不再需要“前向声明”方法,如果它们是在同一个编译单元中定义的。嗯……不要认为这是一个好的做法……我看不出有什么问题。编译器更聪明,它会检查剩余的实现块以找到匹配的原型。如果调用与原型不匹配,您仍然会收到警告或错误。