0
私は問題を抱えているかなり簡単なアプリを持っています。それは数秒間うまく動作しますが、しばらくするとクラッシュします。ここに私のコードです:cocos2d iosアプリがエラーなしでクラッシュする - 予期しないdealloc
-(id) init
{
if((self=[super init])) {
self.isTouchEnabled = YES;
trail = [[CCMotionStreak streakWithFade:3.0f minSeg:1 image:@"streak.png" width:6 length:50 color:ccc4(120, 250, 150, 200)] autorelease];
[self addChild:trail z:1 tag:2];
}
return self;
}
-(BOOL) ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
[self ccTouchesMoved:touches withEvent:event];
return YES;
}
-(BOOL)ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
CGPoint touchLocation = [touch locationInView: [touch view]];
touchLocation = [[CCDirector sharedDirector] convertToGL: touchLocation];
[trail setPosition:touchLocation];
return YES;
}
-(BOOL)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
return YES;
}
そしてここで、デバッガコンソールからセッションデータをです:
[Session started at 2011-06-21 14:37:41 +0800.]
2011-06-21 14:37:49.933 Particle[3587:207] cocos2d: cocos2d v0.9.0 beta2
2011-06-21 14:37:49.936 Particle[3587:207] cocos2d: Using Director Type:CCDisplayLinkDirector
2011-06-21 14:37:50.313 Particle[3587:207] cocos2d: Frame interval: 1
2011-06-21 14:38:01.880 Particle[3587:207] cocos2d: deallocing <CCRibbonSegment = 0603D000 | end = 50, begin = 50>
を、それがクラッシュしたときに右され、それが与えるとき、その文をdeallocing。ここで何が起こっているか考えてみましょうか?
その他の詳細:トレイルの初期化で '保持'を置き換えて完全に削除しようとしましたが、どちらも違いはありません。
"autorelease"を "retain"に置き換えて完全に削除しようとしました。どちらも違いを生み出さないようです。 – Fibericon
テンプレートから新しいcocos2dプロジェクトを作成し、HelloWorldLayerのinitメソッドをinitメソッドに置き換え、CCNode *型のtrail ivarを追加してtouchesメソッドを追加してコードを試しました。しかし、シミュレータでクラッシュすることはありません。私はcocos2d v1.0.0-rcを実行しています。それは、cocos2dのそれ以降のバージョンで修正されたバグでしょうか? (ところで、ccTouches ...メソッドはシグネチャをvoidに戻すように変更したので、私もそれらを変更しましたが、大きな違いがあったのでしょうか?) –
バグをアップデートして修正しました。ご協力いただきありがとうございます!私は信じる前に0.9.0.0を使っていました。 – Fibericon