J'ai été bloqué pendant des jours et chaque fois que j'y reviens, je continue à rendre mon code de plus en plus confus pour moi, lol. Voici ce que j'essaie de faire. J'ai la liste des frais de table, je tape sur un et amène une vue de modèle avec les détails de charge. Maintenant, lorsque le modèle est présenté, un objet est créé pour extraire une liste XML d'utilisateurs et l'analyse et renvoie un NSMutableArray via un délégué personnalisé. J'ai alors un bouton qui présente un popover sélecteur, quand la vue popover est appelée le tableau utilisateur est utilisé dans un appel initWithArray à la vue popover. Je sais que les données dans le tableau sont correctes, mais quand [pickerUsers count] est appelé, j'obtiens un EXC_BAD_ACCESS. Je suppose que c'est un problème de mémoire/propriété mais rien ne semble aider. Toute aide serait appréciée.Objectif-C NSMutableArray Nombre de causes EXC_BAD_ACCESS
extraits de code pertinents:
Charge Popover (vue du modèle détails Charge):
@interface ChargePopoverViewController .....
NSMutableArray *pickerUserList;
@property (nonatomic, retain) NSMutableArray *pickerUserList;
@implementation ChargePopoverViewController
@synthesize whoOwesPickerButton, pickerUserList;
- (void)viewDidLoad {
JEHWebAPIPickerUsers *fetcher = [[JEHWebAPIPickerUsers alloc] init];
fetcher.delegate = self;
[fetcher fetchUsers];
}
-(void) JEHWebAPIFetchedUsers:(NSMutableArray *)theData {
[pickerUserList release];
pickerUserList = theData;
}
- (void) pickWhoPaid: (id) sender {
UserPickerViewController* content = [[UserPickerViewController alloc] initWithArray:pickerUserList];
UIPopoverController *popover = [[UIPopoverController alloc] initWithContentViewController:content];
[popover presentPopoverFromRect:whoPaidPickerButton.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
content.delegate = self;
}
Picker utilisateur View Controller
@interface UserPickerViewController .....
NSMutableArray *pickerUsers;
@property(nonatomic, retain) NSMutableArray *pickerUsers;
@implementation UserPickerViewController
@synthesize pickerUsers;
-(UserPickerViewController*) initWithArray:(NSMutableArray *)theUsers {
self = [super init];
if (self) {
self.pickerUsers = theUsers;
}
return self;
}
- (NSInteger)pickerView:(UIPickerView *)thePickerView numberOfRowsInComponent:(NSInteger)component {
// Dies Here EXC_BAD_ACCESS, but NSLog(@"The content of array is%@",pickerUsers); shows correct array data
return [pickerUsers count];
}
je peux fournir le code supplémentaire si cela pourrait aider. Merci d'avance.
Serait-ce accompli par: [theData retain]; self.pickerUserList = theData; – JoshEH
Commencez par lire le Guide de gestion de la mémoire Cocoa. Cela devrait être clair à partir de ça. Ensuite, créez et analysez votre code. Cela devrait l'attraper. Finalement, je le réparerais en remplaçant ces deux lignes de code par 'self.pickerUserList = theData; – bbum