У меня есть собственный класс:
@interface Player : NSObject {
NSInteger mPlayerNo;
}
-(id) initWithNum:(NSInteger) playerNum;
@implementation Player
-(id) initWithNum:(NSInteger) playerNum
{
if(![super init])
return nil;
...
mPlayerNo=playerNum;
return self;
}
@end
Мне нужен массив объектов Player в другом классе программы:
@interface Spec : NSObject {
NSMutableArray * mPlayers;
...
}
Итак, я пытаюсь заполнить mPlayers arrв методе init класса Spec вот так:
- (id)init {
if(![super init])
return nil;
NSMutableArray * _array=[[NSMutableArray alloc] init];
mPlayers=_array;
[_array release];
Player * _player=[[[Player alloc] initWithNum:(NSInteger)1]autorelease];
[mPlayers addObject:_player]; // crashes with EXC_BAD_ACCESS
Не работает.Но если я поменяю
NSMutableArray * _array=[[NSMutableArray alloc] init];
mPlayers=_array;
[_array release];
на
mPlayers=[[NSMutableArray array]retain];
Все работает нормально.Это что-то странное для меня.Пожалуйста, помогите разобраться в проблеме с alloc init.