[英]Memory leak while assigning rootviewcontroller
儀器在self.window.rootViewController= navigationController;
處顯示了100%的內存泄漏self.window.rootViewController= navigationController;
。 應用程序使用ARC。 UINavigationController
, UIViewController
和window都是屬性具有很強的屬性。 我該如何解決此泄漏。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
txnObserver = [[InAppPurchaseObserver alloc] init];
txnObserver.delegate = self.viewController;
[[SKPaymentQueue defaultQueue] addTransactionObserver:txnObserver];
navigationController = [[UINavigationController alloc]initWithRootViewController:viewController];
**self.window.rootViewController= navigationController;**
[self.window makeKeyAndVisible];
return YES;
}
相同的代碼在iOS 6中未顯示任何泄漏,但在iOS 7中顯示了泄漏。
更新了2013/10/10問題的詳細信息。
您可以通過以下代碼來更改didFinishLaunchingWithOptions
,而無需使用@Controller的viewController屬性:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
ViewController *viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:rootViewController];
self.window.rootViewController = navigationController;
[self.window makeKeyAndVisible];
return YES;
}
使用@property (nonatomic, strong) ViewController *viewController;
:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:self.viewController];
self.window.rootViewController = navigationController;
[self.window makeKeyAndVisible];
return YES;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.