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中生成此特定代码段? 我可以将其删除吗? 我该如何使用它?
答案 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,因为大多数时候你不需要暴露他们。
你也可以拥有任何其他私人财产,以及我写的那些方法。
希望它有所帮助。