Чтобы начать, позвольте мне сказать вам, что я являюсь новичком Objective-C. Это моя проблема:Обход NSMutableArray?
У меня есть NSMutableArray, в котором хранятся объекты, (Player), который имеет имя игрока и его счет.
Я могу добавить объекты к массиву с помощью addObject
, но у меня возникли проблемы с перемещением этого массива. Это как я это делаю:
// Get the reference to the array
NSMutableArray *myarray = [delegate getArray];
// Create a numerator
NSEnumerator *e = [myarray objectEnumerator];
id object;
while (object = [e nextObject])
{
[object printPlayer];
}
Метод printPlayer принадлежит к классу игрока, и он просто печатает имя и счет.
Проблема заключается в том, когда у меня есть три игрока в массиве, и я пытаюсь напечатать содержимое, он достигает эту ошибку внутри метода printPlayer:
Thread 1: EXC_BAD_ACCESS(code=1, address=0x0000008)
Как ни странно, если я использую NSLog(@"%@", object);
вместо [object printPlayer];
он печатает ссылка на объект и не достигает какой-либо ошибки.
Любой мог указать мне, что может быть проблема, когда я пытаюсь использовать [object printPlayer]
Приветствия
Update 1: Это мой метод printPlayer:
-(void) printPlayer
{
NSLog(@"\n\nName: %@\nScore: %d", playerName, playerScore);
}
Update 2 :
Player.h:
@interface PROGPlayer : NSObject
@property (nonatomic, assign) NSString *playerName;
@property (nonatomic, assign) int playerScore;
-(id) init: (NSString *) n;
-(void) printPlayer;
@end
Player.m:
#import "PROGPlayer.h"
@implementation PROGPlayer
@synthesize playerName;
@synthesize playerScore;
/**
* Player's class constructor
* @param n Player's name
* @param s Player's score
*/
-init: (NSString *) n
{
if (!(self = [super init])) return nil;
else
{
playerName = n;
playerScore = 0;
}
return self;
}
-(void) printPlayer
{
NSLog(@"\n\nName: %@\nScore: %d", playerName, playerScore);
}
@end
Вы используете автоматический подсчет ссылок в вашем проекте? –
не отвечает на вопрос .. НО ОБЩИЙ SUGGESTION http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/objectivec/Chapters/ocFastEnumeration.html – Neo
Вы могли бы иметь ошибку в вашем printPlayer код. Можете ли вы опубликовать это? –