为什么在SUFirstViewController.m中生成此特定代码段?

时间:2012-03-25 10:27:18

标签: objective-c ios5 xcode4.3

info:iOS5,xcode4.3.2,iphone5

从xcode模板向导创建选项卡视图控制器应用程序 下面的代码生成了(有些文章被我截断了)。

=== SUFirstViewController.h

#import <UIKit/UIKit.h>    
@interface SUFirstViewController : UIViewController    
@end

=== SUFirstViewController.m

    #import "SUFirstViewController.h"    

    @interface SUFirstViewController ()    
    @end

    @implementation SUFirstViewController    
    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.
    }    
    @end

===
我的问题是关于这段代码:

@interface SUFirstViewController ()    
@end

为什么在SUFirstViewController.m中生成此特定代码段? 我可以将其删除吗? 我该如何使用它?

3 个答案:

答案 0 :(得分:1)

它是为案例生成的,你想要声明私有的东西(方法,成员,协议等)如果你没有,你可以安全地删除它。

答案 1 :(得分:1)

这是一个Objective-C Class Extension。这是您通常声明私有方法和实例变量的地方。例如:

@interface MyClass()
{
    int _privateInstanceVariable;
}
@property (nonatomic, retain) NSString* privateProperty;
-(void)privateMethod;
@end

@implementation MyClass
@synthesize privateProperty;

// etc...

如果未使用,可以将其删除。

答案 2 :(得分:1)

正如马蒂亚斯所说,对于你想要保密或隐藏给班级客户的东西:)

这部分代码称为类扩展(其他人将其称为匿名类别,因为它们在括号中没有名称),您可以使用它们编写类似这样的内容:

@interface SUFirstViewController ()
@property (nonatomic, strong) IBOutlet UITextView *textview;
@property (nonatomic) float privateProperty;
- (IBAction)someAction:(id)sender;
- (float)resultOfDoingSomething;
@end

Interface Builder非常聪明,如果你在这里写的话,你可以把你的插座/动作放在一边,事实上,Apple建议你在这个地方宣布你的IBOutlets / IBActions,因为大多数时候你不需要暴露他们。

你也可以拥有任何其他私人财产,以及我写的那些方法。

希望它有所帮助。