从XCode 4.2到4.3,新的ViewController类.m文件的定义不同.为什么?

RLH*_*RLH 1 cocoa-touch coding-style ios xcode4.2 xcode4.3

像大多数人一样,我最近下载了最新版本的XCode(4.3.1).我注意到,当我创建新UIViewController对象时,关联.m文件包含我以前从未见过的其他类定义代码.

具体来说,如果我创建一个UIViewController名为'TestViewController' 的新命令,我会得到以下.m文件输出.

\\... removed comments...
#import "TestViewController.h"

@interface TestViewController ()

@end

@implementation TestViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}
Run Code Online (Sandbox Code Playgroud)

\等等...

自XCode 4.3以来新添加的代码是#import声明下的部分:

@interface TestViewController ()

@end
Run Code Online (Sandbox Code Playgroud)

这段代码的目的是什么?可以/应该在括号内进行任何操作吗?是否有任何代码都在@interface@end语句中?

简而言之,将此代码添加到模板的重点是什么?作为一个有趣的旁注,当我尝试NSObject从模板创建时,没有添加上面提到的代码片段.它可能出现在其他类型的类模板中,但目前我只遇到过它UIViewControllerUITableViewController对象.

Sea*_*ean 9

这是Objective-C类扩展.它用于定义"私有"变量,属性和方法.

我们的想法是.h文件应该只包含可公开访问的属性和方法.通常,在编写视图控制器时,您需要/需要编写方法,但这些方法不应公开显示(即,这些方法只应在.m文件中使用).您在类扩展中声明这些方法,以使其远离公共.h接口.