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

3
根据开发者文档,类扩展是通过在实现文件中声明一个@interface来实现的。它也可以用于重新声明实例变量为私有变量。但是,我经常看到下面的代码,它不会声明新的方法或实例变量。它的目的是什么?
#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController 
...  

1
类别扩展不用于重新声明实例变量为私有的。您可以使用类别扩展来声明私有实例变量。这意味着实例变量永远不应该放在.h文件中。当然,在@implementaiton块中声明实例变量最简单(也是最好的)方法。 - rmaddy
1个回答

4

这段代码并没有实际用途,唯一存在的原因是它是在Xcode中创建.m文件时标准模板的一部分。

话虽如此,这样的类扩展是完全无害的,因此保留它们以备不时之需不会影响应用程序的性能。最终,这是个人口味问题:例如,我会将这些未使用的模板生成的代码从我的代码中删除,但我也可以接受保留它们的论点。

如果您不希望默认生成这些类扩展,请克隆和修改新的Objective-C类的Xcode模板(这里有一个解释如何做到这一点的问答)。


1
我认为最好删除任何不起作用的生成代码(例如viewDidLoaddidReceiveMemoryWarning,它们只调用super)。代码只需编写一次,但会被多次阅读,因此请节省自己和同事宝贵的时间,避免阅读不必要的代码。 - Michał Ciuba
我认为多年来问答(Q&A)已经不再适用了。现在基本上不可能修改模板。 - matt
@matt 我正在使用几个自定义模板(至少是我自己的类模板)与Xcode 6,所以这仍然是可能的。 - rmaddy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接