1

我是 Objective-C 的初学者。我在 Xcode5 中尝试基本的 Objective-C 程序。我创建了一个项目,比如 Example1,我在其中编写了一个包含两个类的程序,比如Class1Class2同一个 .h 文件中。我创建了这个类 -Class1通过 - File-->New File--> Objective-C Class ( NSObject)。创造了这个,

@interface Class1 : NSObject
{

}

@end

我通过添加创建的第二个类 Class2,

@interface Class2 : NSObject
{

}

@end

现在,当我通过创建一个新文件来创建另一个类时(就像我所做的那样Class1),我得到了另一组 .h 和 .m 文件。

我的疑问是,在同一个 .h 文件和不同的 .h 文件中使用不同的类有什么区别?

4

3 回答 3

2

在 ObjC 中,传统的做法是为每个类赋予其自己的 .h 和 .m,并赋予这些文件与类相同的名称。在大多数情况下,这可以简化您在代码中的查找方式。这不是必需的。您当然可以将所有类定义放在一个 .h 中;您可以将整个程序放在一个 .m 中,根本没有用户标题。但这是传统的,通常是将它们分开是一种很好的做法。

也有例外。有时,两个类非常相关,并被放在一个标题中。一个著名的例子是NSArrayNSMutableArray,它们都在 中定义NSArray.h。苹果进一步推动了这一点NSCalendar.h,其中包括NSDateComponents. (就个人而言,我可能会拆分NSDateComponents为自己的标题,但这是不同意见的一个例子。)

在非常大的系统(如 Cocoa)中,头文件的数量可能会影响编译时效率,因此合并极有可能一起使用的头文件存在一定的压力。这在中等规模的项目中很少见。(实际上在 Cocoa 中也没那么重要,因为 Cocoa 标头几乎总是通过 pch 引入,现在通过模块引入。)

作为一个初级程序员,我会在一致性方面犯错。只需将每个类放入其自己的标题中,并带有匹配的 .m。随着您探索更多现有框架,您将获得更好的直觉,了解何时将类合并到单个标头中可能是合适的。我自己几乎从不这样做。

您可能会遇到另一种合并。在 .m 文件中声明接口是合法的。这对于创建私有助手类很有用。我偶尔会这样做,但我几乎总是发现自己后悔并将私有类拆分为自己的文件。当代码不在一致的位置时,查找代码太烦人了。但是,有时对于微小的私有数据类,有时有理由直接在 .m 中定义它们。

于 2013-10-28T15:20:00.347 回答
0

如果在同一个文件中声明两个或多个接口。外界无法访问除主接口以外的所有接口的方法和属性,因为只能在.m文件中实现主接口。

于 2013-10-28T12:24:46.860 回答
0

通常每个类都有自己的文件 .h 和 .m 但没有什么能阻止你在一个文件中编写所有类,如果这对你来说可以的话。

于 2013-10-28T12:03:57.630 回答