没有任何内容的 class 扩展的目的是什么?

What is the purpose of a class extension without any content?

根据开发人员文档,class 扩展是通过在实现文件中声明 @interface 来实现的,它也可用于将实例变量重新声明为私有。但是,我经常看到下面的代码没有声明新方法或实例变量。它的目的是什么?

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController 
...  

这样的代码背后没有任何目的。它存在的唯一原因是它是在 Xcode.

中创建 .m 文件的标准模板的一部分

话虽如此,这样的 class 扩展是完全无害的,因此保留它们以防您需要添加私有方法或变量不会影响应用的性能。最后,这是个人品味的问题:例如,我从我的代码中删除了这些未使用的模板生成的工件,但我可以接受支持保留它们的论点。

如果您不希望默认生成这些 class 扩展,请克隆并修改 Xcode 新模板 Objective-C classes (here is a Q&A explaining how to do it).