2009/07/29

[Objective-C][iPhone sdk]UITouchのreleaseについて

UIViewは、UIResponderクラスを継承しているので、自動的に下記のメソッドを使うことができます。

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
}

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
}

-(void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event{
}

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
}

そこで、各メソッドの中で
UITouch *touch = [touches anyObject];
と記述し、メソッドの最後に、
[touch release];
と書いて実行してみると、起動時は、うまくいくものの、一度、ホームに戻って再度、アプリを立ち上げると、異常終了となってしまいます。

おそらく実装上のミスなのですが、理由がちょっとわかりません。
宣言時に初期化を行っていないからなのかなーっと思っていますが。
(ex UITouch * touch = [[UITouch alloc] init];)

あまり気にしてしまうと、先に進まないので、とりあえず、releaseメソッドを書かずに、先に進んでいきます。

PS:そーいえば、サンプルアプリをいくつか見ていて、この記述がなかったので、やはり、書かない方が返っていいのかなーっと思っています。
メモリ管理も大変です。。。

0 コメント:

コメントを投稿