我在.m文件中有這樣的代碼,它是一個Cocos 2D CCLayer類。我在init方法中初始化一個數組,然後嘗試在nextFrame方法中使用這個數組的內容。但是,當調用nextFrame方法時,數組的內容看起來是空的。當我試圖得到第一個項目,我收到一條錯誤消息說:可變數組內容在方法之間丟失
程序接收到的信號「EXC_BAD_ACCESS」
我怎樣才能順利地訪問我nextFrame方法這個數組的內容?
NSMutableArray *cars;
-(id) init {
cars = [NSMutableArray array];
Car *car;
car = [[Car alloc] init];
[cars addObject:car];
self.isTouchEnabled = YES;
}
- (void) nextFrame:(ccTime)dt {
Car *car = [cars objectAtIndex:i]; // Program received signal "EXC_BAD_ACCESS"
}
Car.h
#import <Foundation/Foundation.h>
#import "cocos2d.h";
@interface Car : NSObject {
NSInteger type;
CCSprite *sprite;
}
@property (readwrite, assign) NSInteger type;
@property (retain) CCSprite *sprite;
@end
Car.m
#import "Car.h"
@implementation Car
@synthesize type;
@synthesize sprite;
- (id)init
{
self = [super init];
if (self) {
// Initialization code here.
}
return self;
}
- (void) dealloc {
[sprite release];
[super dealloc];
}
@end
cars = [NSMutableArray array]; // - >看起來像自動釋放的對象。將其更改爲cars = [[NSMutableArray alloc] init];如果數組的內容丟失,則訪問objectAtIndex:將導致SIGABRT出現異常NSRangeException。您正在訪問發佈的對象,以便EXC_BAD_ACCESS。 – 0x8badf00d