当我想用 Xcode 创建一个 CocoaTouch 类时,它会生成一个 .h 和 .m 文件,令我困惑的是为什么 .m 文件有这样的代码:
#import "MealTableViewController.h"
//**************below looks unnecessary
@interface MealTableViewController ()
@end
//**************above looks unnecessary
@implementation MealTableViewController
@end
在我看来,它看起来没有必要,因为我已经声明了这个类实现MealTableViewController.h
,即使我删除它,结果也和以前一样。所以为什么这段代码会自动生成吗?创建它的目的是什么?谁知道请教教我,谢谢!
最佳答案
在古代,Objective-C 编译器需要在实际使用方法时知道方法名称和签名。因此,如果您的类定义了一个方法 - (void)foo:(NSString *)bar;
那么编译器必须在您实际调用之前知道这一点 [self foo:@"bing"] ;
。您不能总是以总是在使用前定义方法的方式“排序”您的方法(例如,如果您有方法 alpha
和方法 beta
但两者都调用彼此)。如果您不想在 .h
文件中公开内部方法,则必须在类扩展或类别中声明它们。
如今,Objective-C 编译器已经足够智能,不再需要这种解决方法。但是,如果您想声明不应在 .h
文件中公开的属性,您仍然需要在类扩展中这样做。这就是默认的空模板仍然添加扩展名的原因。
关于ios - 为什么 Xcode 在创建类时生成 "unnecessary"代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33753772/