当我想用Xcode创建一个CocoaTouch类,并生成一个 .h 和 .m 文件时,让我感到困惑的是 .m < / strong>文件有这样的代码:
#import "MealTableViewController.h"
//**************below looks unnecessary
@interface MealTableViewController ()
@end
//**************above looks unnecessary
@implementation MealTableViewController
@end
在我看来,它看起来没必要,因为我声明这个类实现MealTableViewController.h
,甚至我删除它,结果将和以前一样。那么为什么这个代码会自动生成?创建它的目的是什么?任何人都知道请教我,谢谢!
答案 0 :(得分:2)
在远古时代,Objective-C编译器需要在实际使用该方法时知道方法名称和签名。因此,如果您的类定义了方法- (void)foo:(NSString *)bar;
,那么编译器必须知道这一点,然后才能实际调用[self foo:@"bing"];
。你不能总是&#34;排序&#34;您的方法总是在使用之前定义方法(例如,如果您有方法alpha
和方法beta
但两者都互相调用)。如果您不想在.h
文件中公开内部方法,则必须在类扩展或类别中声明它们。
如今,Objective-C编译器非常智能,因此不再需要这种解决方法。但是,如果要声明不应在.h
文件中公开的属性,则仍需要在类扩展中执行此操作。这就是默认空模板仍然添加扩展名的原因。
答案 1 :(得分:0)
@interface
文件中的 .m
表示您可以在此声明一些私有属性/方法