从我第一次开始学习Objective-C开始,我一直在回顾一些旧代码,我有一个简短的问题:
// THIS IS MY OLD CODE
@implementation syntax_UINavAppDelegate
@synthesize window;
@synthesize navController;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
UITableViewController *rootController = [[UITableViewController alloc] init];
navController = [[UINavigationController alloc] initWithRootViewController:rootController];
[window addSubview:[[self navController] view]];
[window makeKeyAndVisible];
return YES;
}
我目前的理解是,在上面的代码中有两个问题,第一,我直接访问属性navcontroller(我应该使用setter),第二,我是否有内存泄漏
[UINavigationController alloc]
?我的直觉是,这不是一个漏洞,因为它会在我打电话时释放出来。
[navController release];
在Dealloc,但这只是一个混乱和糟糕的方式做事情。这是我(现在我知道更多)对同一代码的重做。
// NEW CODE
@implementation syntax_UINavAppDelegate
@synthesize window;
@synthesize navController;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
UITableViewController *rootController = [[UITableViewController alloc] init];
UINavigationController *tempController = [[UINavigationController alloc] initWithRootViewController:rootController];
[self setNavController:tempController];
[rootController release];
[tempController release];
[window addSubview:[[self navController] view]];
[window makeKeyAndVisible];
return YES;
}
只是好奇…
加里