0

最近我一直想知道为什么人们有时会将方法放在代码的 .h 和接口区域中。我只是问,因为我知道这不是完全必要的。

例如:

.h

@interface ViewController : UIViewController

- (IBAction) methodOne:(id)sender;
- (BOOL) doesChickenTasteGood;

并且:

.m

import "ViewController.h"

@interface ViewController ()
- (IBAction) methodOne:(id)sender;
- (BOOL) doesChickenTasteGood;

@end

@implementation ViewController

- (IBAction) methodOne:(id)sender {
      NSLog(@"Yay you poked me");
}

- (BOOL) doesChickenTasteGood {
      return YES;
}

@end

我只是想知道我是否应该将我的一些方法放在这些领域。

编辑:我不是在问为什么有人会在 .h 和代码的接口部分重新声明这些方法。我只是在问为什么有人会将方法放在 .m 文件的实现之外。

4

2 回答 2

4

如果您希望它对其他类可见,您将在标头中声明一个方法。仅在实现文件中声明的方法在编译时对其他类是不可见的,因此实际上是私有的(由于 Objective-C 的动态调度机制,它们仍然可以被调用,但您至少会收到警告。)

方法被放置在@interface实现文件的一个块中,作为在使用之前声明它们存在的一种方式。这允许更有条理的代码(例如,一个@interface只包含图形方法的块,或者一个只包含数学方法的块),同时保持对调用者的隐私。

如果您的标头中没有方法,那么调用代码将不知道如何处理您的类的实例。

于 2013-02-09T15:29:50.133 回答
3

.h 文件构成类的公共方法。如果您希望其他人能够调用您的doesChickenTasteGood方法,则需要在 .h 中声明它,因为其他类会这样做#import

于 2013-02-09T15:29:01.903 回答