在.m文件中构造头文件?

时间:2012-08-13 11:43:44

标签: iphone

您好我正在通过网络上的示例代码研究IOS编程。我发现这个代码有些奇怪,因为它们已经有了h.file,但它们也在m.file中也有h.file代码。

 @interface Manager : NSObject {
}

+(void) goMenu;

这是h。文件

#import "Manager.h"

@interface Manager ()
+(void) go
+(void) wrap
@end


@implementation Manager
....

这是m.file的开头。

对于像我这样的初学者来说,这种情况让我很困惑。请有人解释我发生了什么事?

6 个答案:

答案 0 :(得分:2)

实现文件中的

@interface Manager ()称为class extension

这通常用于添加开发人员希望保密的方法,属性等。

答案 1 :(得分:1)

您在.m文件中看到的是类扩展。您可以阅读有关课程扩展和类别here

的更多信息

答案 2 :(得分:0)

@interface Manager ()文件中的.m主要用于声明私有方法和属性。

.h中声明的每个事物(主要是)公共方法和属性。但有时你想要的方法和属性不公开。

请注意,使用objective-c,您仍然可以调用这些方法和属性,编译器会发出警告,调用这样的方法可能会因为调用可能无法响应方法而无法工作。

答案 3 :(得分:0)

.h文件中的所有函数也可能对其他类感兴趣。这些是每个人都可以看到的公共界面。其他类文件可以#import .h文件,因此知道所有公共函数。

另一方面,.m文件中的函数是私有接口。直到最近,所有方法都必须在使用之前声明(也可以方便快速浏览)。通过使用此构造,开发人员在.m文件的开头声明了方法的存在,以便可以在整个文件中使用它们。由于.m文件不会导入/包含在其他文件中,因此它们本身不是外部可见的。

请注意,此机制并未由任何类型的安全机制强制执行,如果选择,则可以覆盖此机制。

答案 4 :(得分:0)

您.m文件中的接口被视为私有,并且在其他类中引用您Manager类时未显示。

但是,我相信你可以从其他课程中调用它们,只要你不在(和)之间添加“私人”。 (使其成为@interface Manager (Private))...但是您会收到警告,类经理可能不会实现这样一个名为wrap的方法。

答案 5 :(得分:0)

这是一个类扩展。它可以用于私有方法,实例也是。这里有link,它可以为您提供更多详细信息。