iOS5からARCがサポートされて、deallocメソッドを明示的に呼び出す必要性がなくなりました。
しかし、UINavigationController内部のUIViewControllerがpopされた時に、どうやらdeallocが呼び出されるようだ。
//AppDelegate.m - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { ViewController *viewController = [[ViewController alloc] initWithNibName:nil bundle:nil]; UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:viewController]; self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; // Override point for customization after application launch. self.window.backgroundColor = [UIColor whiteColor]; self.window.rootViewController = navigationController; [self.window makeKeyAndVisible]; } //ViewController.m - (void)viewDidLoad { [super viewDidLoad]; UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; button.frame = CGRectMake(100, 100, 200, 50); [button setTitle:@"next" forState:UIControlStateNormal]; [button setTitleColor:[UIColor redColor] forState:UIControlStateNormal]; [button addTarget:self action:@selector(pushed) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:button]; } -(void)dealloc{ NSLog(@"呼ばれました"); } -(void)pushed{ ViewController *viewController = [[ViewController alloc] initWithNibName:nil bundle:nil]; [self.navigationController pushViewController:viewController animated:YES]; }上のプログラムの場合、ナビゲーションバーに表示される「Back」ボタンによって、deallocメソッドがコールされました。
NSNotificationCenterのremoveObserverをかました時に便利かも。
0 コメント:
コメントを投稿