カスタム CCSprite サブクラスを持つ cocos2d プロジェクトがあります。
MyCustomSprite.h:
#import "cocos2d.h"
@interface MyCustomSprite : CCSprite
@end
MyCustomSprite.m:
#import "MyCustomSprite.h"
@implementation MyCustomSprite
- (id)init
{
self = [super initWithFile:@"index.png"];
return self;
}
@end
奇妙な理由で、このコードは「EXC_BAD_ACCESS」でクラッシュします。
しかし、これにもかかわらず、通常どおりにスーパーを初期化してから、CCSprite の initWithFile および initWithTexture からコードを記述すると、正常に動作します。
self = [super init];
if (self) {
// Code from CCSprite.m - initWithFile
CCTexture2D *texture = [[CCTextureCache sharedTextureCache] addImage: @"index.png"];
CGRect rect = CGRectZero;
rect.size = texture.contentSize;
// Code from CCSprite.m - iniWithTexture
[self setTexture:texture];
[self setTextureRect:rect];
return self;
}
最初の例がクラッシュし、2 番目の例がクラッシュしない理由と、それらの違いは何ですか?
回答ありがとうございます。