为什么Xcode在创建类时会生成“不必要的”代码?

时间:2015-11-17 09:51:07

标签: ios xcode

当我想用Xcode创建一个CocoaTouch类,并生成一个 .h .m 文件时,让我感到困惑的是 .m < / strong>文件有这样的代码:

#import "MealTableViewController.h"
//**************below looks unnecessary
@interface MealTableViewController ()

@end
//**************above looks unnecessary
@implementation MealTableViewController

@end

在我看来,它看起来没必要,因为我声明这个类实现MealTableViewController.h,甚至我删除它,结果将和以前一样。那么为什么这个代码会自动生成?创建它的目的是什么?任何人都知道请教我,谢谢!

2 个答案:

答案 0 :(得分:2)

在远古时代,Objective-C编译器需要在实际使用该方法时知道方法名称和签名。因此,如果您的类定义了方法- (void)foo:(NSString *)bar;,那么编译器必须知道这一点,然后才能实际调用[self foo:@"bing"];。你不能总是&#34;排序&#34;您的方法总是在使用之前定义方法(例如,如果您有方法alpha和方法beta但两者都互相调用)。如果您不想在.h文件中公开内部方法,则必须在类扩展或类别中声明它们。

如今,Objective-C编译器非常智能,因此不再需要这种解决方法。但是,如果要声明不应在.h文件中公开的属性,则仍需要在类扩展中执行此操作。这就是默认空模板仍然添加扩展名的原因。

答案 1 :(得分:0)

@interface文件中的

.m表示您可以在此声明一些私有属性/方法