Objective c 目标c:方法关系.h和.m

Objective c 目标c:方法关系.h和.m,objective-c,xcode,header,void,Objective C,Xcode,Header,Void,我有一个理论问题:但是每个方法和iAction都必须在.h中声明???因为如果我在.m而不是.h中编写一个方法(void),项目就不会有问题。这是如何实现类的指南 用“C”的术语来考虑它。您可以在.h(头文件)文件中定义原型,并在.c(本例中为.m)文件中进行实现 这两种方法都可以,只是不要在.m中重新定义它。如果你想从另一个类中访问函数,你需要导入.h头文件,让你的编译器知道在哪里可以找到这些函数以及如何翻译它们。不,它们不都需要在头文件中声明 当试图按类别或扩展将方法设置为“private”

我有一个理论问题:但是每个方法和iAction都必须在.h中声明???因为如果我在.m而不是.h中编写一个方法(void),项目就不会有问题。

这是如何实现类的指南

用“C”的术语来考虑它。您可以在.h(头文件)文件中定义原型,并在.c(本例中为.m)文件中进行实现


这两种方法都可以,只是不要在.m中重新定义它。

如果你想从另一个类中访问函数,你需要导入.h头文件,让你的编译器知道在哪里可以找到这些函数以及如何翻译它们。

不,它们不都需要在头文件中声明

当试图按类别或扩展将方法设置为“private”时,通常会忽略标题中的声明。这是否比将标题中的对象声明为private更危险或更不危险是有争议的,这取决于使用对象的人


在单独的头中声明一个与基类型不太相关的类别也很好。

是的,没有必要在.h中声明方法,因为在目标c中,任何消息都可以传递给任何对象。这就是为什么它没有给出任何错误,只是警告“ABClass可能不会响应messageABC”。对于像我这样一个讨厌警告的人来说,在.h.中声明它。这是一个很好的实践,因为不在头中声明它更容易崩溃,因为您只是忽略警告,实例无法处理该消息,您的应用程序会说,“你好,Crash先生”。“再见”开发者。

这实际上是完全错误的,尽管可以理解,所以没有否决票。Objective-C使用动态分派,因此重要的是对象知道如何在运行时响应方法。您需要将Objective-C方法放在头文件中的唯一原因是防止编译器认为您忘记定义它们,并抑制警告(除非您声明该方法,否则它将假定所有参数都是对象)。