2010-07-12 6 views
0

Je n'ai que ce code en m. fichierNSMutableArray Exc_Bad_Access

NSMutableArray * arrayOfBools; 

    arrayOfBools=[[NSMutableArray alloc] initWithCapacity:1000]; 

NSNumber *ijk =(NSNumber*) 9; 

     [arrayOfBools addObject:ijk];     

Erreur sur ce [arrayOfBools addObject: ijk];

+0

Obj-C ne convertit pas automatiquement entre différents types, et ce que vous faites avec '(NSNumber *)' est appelé typecasting, sauf si vous le savez ce que vous faites, devrait être évité. Dans cet exemple, vous créez un entier dans un pointeur, avec des résultats désastreux. – lucius

Répondre

4

Vous ne pouvez pas déclarer et définir un NSNumber comme ceci: NSNumber *ijk =(NSNumber*) 9;. Ceci le mettra à un nombre entier (9).

Utilisez ceci:

NSNumber *ijk = [NSNumber numberWithInt:9]; 
1

La troisième ligne, la déclaration du NSNumber est incorrect. Si vous tentez d'insérer un booléen dans un NSNumber, utilisez NSNumber *test = [NSNumber numberWithBool:YES];