使用UITabBarController进行@synthesize?

时间:2010-05-27 10:46:05

标签: iphone objective-c cocoa-touch

我很好奇是否有充分的理由我应该/不应该在下面的tabBarController中使用@synthesize,还是没关系?

@implementation ScramAppDelegate
@synthesize window;
@synthesize tabBarController;

-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
    [self setTabBarController:[[UITabBarController alloc] init]];
    [window addSubview:[tabBarController view]];
    [window makeKeyAndVisible];
    return YES;
}

-(void)dealloc {
    [tabBarController release];
    [self setTabBarController: nil];
    [window release];
    [super dealloc];
}

OR

@implementation ScramAppDelegate
@synthesize window;

-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
    tabBarController = [[UITabBarController alloc] init];
    [window addSubview:[tabBarController view]];
    [window makeKeyAndVisible];
    return YES;
}

-(void)dealloc {
    [tabBarController release];
    [window release];
    [super dealloc];
}
欢呼加里

2 个答案:

答案 0 :(得分:1)

对于我的应用程序委托类中的视图控制器,我个人不打扰@property。主要是因为app委托位于视图层次结构的顶部,并且不需要将其成员变量公开给任何人。

另一个不是来自该行的原因:

tabBarController = [[UITabBarController alloc] init];

因为如果tabBarController@property设置为retain,你将双重保留对象,这是一种内存泄漏的形式(尽管它发生在app delegate level。。

答案 1 :(得分:-1)

如果tabBarController是一个属性(在您的.h文件中使用@property (nonatomic, retain) TabBarController *tabBarController声明),并且您想要为其自动创建getter和setter方法,则应该使用@synthesize .m文件。如果您想自己实现getter和setter,则必须指定@dynamic tabBarController