我很好奇是否有充分的理由我应该/不应该在下面的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];
}
欢呼加里
答案 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
。