Note that there are some explanatory texts on larger screens.

plurals
  1. POError when subclassing NSObject: "EXC_BAD_ACCESS"
    text
    copied!<p>I'm trying to create a class called HighscoresController which subclasses NSObject. When I call <code>init</code> method in the following manner, I get an error in the debugger <code>GDB: Program received signal: "EXC_BAD_ACCESS"</code>. Does anyone have any idea why? I'm completely stumped.</p> <pre><code>// Initialize the highscores controller _highscoresController = [[HighscoresController alloc] init]; </code></pre> <p>Here's my class implementation:</p> <pre><code>#import "HighscoresController.h" #import "Constants.h" @implementation HighscoresController @synthesize highscoresList = _highscoresList; - (id) init { self = [super init]; _highscoresList = [[NSMutableArray alloc] initWithCapacity:kHighscoresListLength]; int kMyListNumber = 0; NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"highscores.plist"]; if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) { // if settings file exists NSArray *HighscoresListOfLists = [[NSArray alloc] initWithContentsOfFile:filePath]; _highscoresList = [HighscoresListOfLists objectAtIndex:kMyListNumber]; [HighscoresListOfLists release]; } else { // if no highscores file, create a new one NSMutableArray *array = [[NSMutableArray alloc] init]; [array addObject:_highscoresList]; [array writeToFile:filePath atomically:YES]; [array release]; } [_highscoresList addObject:[NSNumber numberWithFloat:0.0f]]; return self; } - (void) addScore:(float)score { // Implementation } - (BOOL) isScore:(float)score1 betterThan:(float)score2 { if (score1 &gt; score2) return true; else return false; } - (BOOL) checkScoreAndAddToHighscoresList:(float)score { NSLog(@"%d",[_highscoresList count]); if ([_highscoresList count] &lt; kHighscoresListLength) { [self addScore:score]; [self saveHighscoresList]; return true; } else { NSNumber *lowScoreNumber = [_highscoresList objectAtIndex:[_highscoresList count]-1]; float lowScore = [lowScoreNumber floatValue]; if ([self isScore:score betterThan:lowScore]) { [self addScore:score]; [self saveHighscoresList]; return true; } } return false; } - (void) saveHighscoresList { // Implementation } - (void) dealloc { [_highscoresList release]; _highscoresList = nil; [super dealloc]; } @end </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload