Я застрял на этом в течение нескольких дней, и каждый раз, когда я возвращаюсь к нему, я все время делаю свой код более запутанным для себя, lol. Вот что я пытаюсь сделать. У меня есть таблица списков сборов, я нажимаю один и поднимает модельный вид с подробной информацией. Теперь, когда модель представлена, создается объект для извлечения списка пользователей XML и его анализа и возвращает NSMutableArray через пользовательский делегат. Затем у меня есть кнопка, которая представляет собой сборщик popover, когда вид popover называется массивом пользователя, используется в вызове initWithArray для представления popover. Я знаю, что данные в массиве правы, но когда вызывается [pickerUsers count], я получаю EXC_BAD_ACCESS. Я предполагаю, что это проблема памяти/собственности, но ничего не помогает. Любая помощь будет оценена по достоинству.Objective-C NSMutableArray Count Causes EXC_BAD_ACCESS
Соответствующие фрагменты кода:
Charge поповер (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 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];
}
Я могу предоставить дополнительный код, если это может помочь. Заранее спасибо.
Будет ли это достигнуто путем: [Сохранение данных]; self.pickerUserList = theData; – JoshEH
Во-первых, прочитайте руководство по управлению памятью какао. Из этого следует ясно. Затем создайте и проанализируйте свой код. Это должно поймать это. Наконец, я исправлю это, заменив эти две строки кода на 'self.pickerUserList = theData;' – bbum