2012年10月8日月曜日

[iOS]ViewControllerでtouchesBeganやボタンのイベントをとるときの注意

以下のようなソースでは、touchesBeganやボタンのイベントはとれない。
 
hpListViewController* listViewController=[[[hpListViewController alloc]initWithFrame:rect]autorelease];

[contenaView addSubview:listViewController.view];
なぜなら、viewはaddSubViewされて保持されるが viewControllerはどこにも関連がないので、解放されてしまう。 だから、利用時にメモリ違反をおこす。 以下のように、retainするか、配列などで保持して、解放されないようにしよう。
 
hpListViewController* listViewController=[[[hpListViewController alloc]initWithFrame:rect]retain];

[contenaView addSubview:listViewController.view];

0 件のコメント:

コメントを投稿