4

我查看了许多代码示例,发现人们通常在头文件 (.h) 中声明所有方法和全局变量。有必要吗?

4

3 回答 3

10

公开使用的方法(即由实现该方法的类以外的类)和(真正的)全局变量确实应该在头文件中声明。重点是您可以在另一个源代码文件中导入头文件,以访问那里声明的功能。

本来是私有的方法——仅作为类的内部实现的一部分被调用——可以在类扩展中声明。使用最新版本的 LLVM/Xcode,您实际上甚至不需要为非 @property 方法执行此操作。您可以简单地实现它们,编译器将足够聪明,可以在从同一类实现中的其他方法调用它们时看到它们在那里。

如果您需要显式定义私有 ivar(现在很少见),您可以在紧接在@implementationor之后的大括号括起来的部分中执行此操作@interface ClassName ()

简而言之:声明需要从 .h 文件中的其他类访问的方法、函数和变量。私有方法和变量应该通过仅在 .m 文件中声明来保持私有。

于 2013-02-12T23:45:46.500 回答
5

在最新版本的 SDK 中,您不必为类声明仅在内部使用的方法,这样可以减少 .h 文件中的混乱情况。通常,我放入 .h 中的唯一方法、属性和 ivars 是我知道其他类需要访问的那些。这样一来,我就不会犯错误,即从外部访问应该仅限于内部的属性。其余的,我在 .m 文件中添加了一个类扩展,如下所示:

#import "MyClass.h"

@interface MyClass ()
{
    int _myIvar; // I rarely use these anymore,
                 // but if you want to use them, they go here.
}

@property (strong, nonatomic) NSArray *someArray;
@property (strong, nonatomic) NSDictionary *anotherProperty

@end

@implementation MyClass

@end
于 2013-02-12T23:49:31.430 回答
0

头文件对编译器根本没有特殊意义。当您编写#import 时,预处理器只是将它们复制粘贴到实现文件中。

于 2013-02-12T23:32:07.880 回答