在.h文件和.m文件中声明方法之间的区别,指定@interface和@end

Bal*_*ram 2 iphone objective-c

我只是不明白为什么有些人在.m文件中声明方法.这些声明不能只是进入.h文件吗?这是我看到的主要内容:

//myClass.h

#import <UIKit/UIKit.h>

@interface myClass: UIViewController
{

}

@end
Run Code Online (Sandbox Code Playgroud)

和实现(.m)部分:

//myClass.m

#import "myClass.h"

@interface myClass

//declare some methods here

@end

@implementation myClass

//the actual implementation

@end
Run Code Online (Sandbox Code Playgroud)

当方法以这种方式声明时有什么区别吗?另外,"@private"方法可以在myClass.h中声明,不是吗?

Abi*_*ern 5

它是关于保持公共和私人接口之间的分离.

能够在实现文件中声明方法,属性和iVars是一个明确的指示,指示您可以在类中执行和使用的内容以及可以从类外部执行的操作.

您还可以重新声明属性.例如:

在.h

@property (readonly, copy) NSString *aString;
Run Code Online (Sandbox Code Playgroud)

在.m

@property (readwrite, copy) NSString *aString;
Run Code Online (Sandbox Code Playgroud)

因此,在您的类中,您可以将属性视为readwrite,但在外部,该属性是readonly.