2012-03-25 37 views
0

info:iOS5,xcode4.3.2,iphone5为什么在SUFirstViewController.m中生成这个特定的代码片段?

从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 

为什么在SUFirstViewControlle中生成这个特定的代码片段? R M ?
我可以删除它吗?
我该如何使用它?

回答

1

正如马蒂亚斯说,是要保密的或隐藏的类:)

的这部分代码的客户被称为类扩展事(别人称他们为匿名类,因为他们没有在括号中的名字),你可以用它们来写这样的事:

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

Interface Builder中是相当聪明,你就能如果他们在这里写至飞你的网点/动作,事实上苹果建议让你的IBOutlets/IBActions在这个地方宣布,因为大多数时候你不需要暴露它们。

您也可以拥有其他任何私有财产,以及像我写的那样的方法。

希望它有帮助。

1

它生成的情况下,你想做私人事情(方法,成员,协议等)如果你不这样做,你可以安全地删除它。

1

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

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

@implementation MyClass 
@synthesize privateProperty; 

// etc... 

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

相关问题