Break su EXC_BAD_ACCESS in XCode?

Sono nuovo nello sviluppo di iPhone e XCode in generale e non ho idea di come iniziare a risolvere il problema con un segnale EXC_BAD_ACCESS . Come posso far sì che XCode si interrompa alla linea esatta che causa l’errore?


Non riesco a convincere XCode a fermarsi sulla linea che causa il problema, ma vedo le seguenti righe nella mia console di debug:

Sun Oct 25 15:12:14 jasonsmacbook TestProject [1289]: CGContextSetStrokeColorWithColor: contesto non valido

Sun Oct 25 15:12:14 jasonsmacbook TestProject [1289]: CGContextSetLineWidth: contesto non valido

Sun Oct 25 15:12:14 jasonsmacbook TestProject [1289]: CGContextAddPath: contesto non valido

Sun Oct 25 15:12:14 jasonsmacbook TestProject [1289]: CGContextDrawPath: contesto non valido

2009-10-25 15: 12: 14.680 LanderTest [1289: 207] *** – [CFArray objectAtIndex:]: messaggio inviato all’istanza deallocato 0x3c4e610

Ora, sto tentando di disegnare nel contesto che UIGraphicsGetCurrentContext() da UIGraphicsGetCurrentContext() e passare all’object con cui voglio disegnare.


Ulteriore verifica e debug degli errori e ho scoperto che un NSMutableArray cui ho una proprietà sulla mia class era uno zombie. Sono andato nella funzione init per la class e qui è il codice che stavo usando:

 if ((self = [super init])) { NSMutableArray *array = [NSMutableArray array]; self.terrainBlocks = array; [array release]; } return self; } 

Ho rimosso la riga [array release] e non mi dà più il segnale EXC_BAD_ACCESS , ma ora sono confuso sul motivo per cui funziona. Ho pensato che quando ho usato la proprietà, l’ha automaticamente mantenuta per me, e quindi dovrei rilasciarla da init modo da non avere una perdita. Sono completamente confuso su come funziona e tutte le guide e le domande StackOverflow che ho letto mi confondono di più su come impostare le proprietà all’interno del mio metodo init. Non sembra esserci consenso su quale sia la via migliore.