我有一個基於導航的應用程序,並在應用程序委託中看到applicationDidFinishLaunchingWithOptions
方法中的泄漏。我不知道在哪裏發佈viewController
。在applicationDidFinishLaunchingWithOptions中釋放視圖控制器
頭文件:
@class ViewController;
@interface AppDelegate : NSObject <UIApplicationDelegate> {
UIWindow *window;
ViewController *viewController;
}
@property (nonatomic, retain) UIWindow *window;
@property (nonatomic, retain) ViewController *viewController;
@end
.m文件
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
UINavigationController *nvc = [[UINavigationController alloc] initWithRootViewController:viewController];
nvc.navigationBar.tintColor = [UIColor grayColor];
nvc.navigationBar.barStyle = UIBarStyleDefault;
[window addSubview:[nvc view]];
[window makeKeyAndVisible];
return YES;
}
- (void)dealloc {
[viewController release];
[window release];
[super dealloc];
}
添加Windows addSubview
線使得後[nvc release]
我viewcontroller
消失.Adding autorelease
到alloc
行凍結的應用並且不能重定向到下一個視圖。我想在將應用程序提交到應用程序商店之前修復所有泄漏。任何人都可以告訴我什麼是正確的地方釋放rootViewController
。
謝謝。
請不要火焰我,我明白即使這個詞最危險,因爲有很多時間釋放到別的地方。即時通訊只是說新的目標C和可可觸摸人的規範 –
我釋放dealloc方法中的viewController。我想釋放nvc(navigationViewController),我正在初始化applicationDidFinishLaunchingWithOptions方法。 – curious123
不是您的主窗口上的導航控制器,並在您的代表?你的問題特別說「釋放rootviewcontroller」而不是nvc。但無論哪種方式,你的nvc聲明在哪裏(我在上面的代碼中看到它,但我不知道那是什麼文件) –