Доступ к NSMutableArray в UITableViewController падает - PullRequest
0 голосов
/ 30 сентября 2011

Я новичок в Object-c и хочу создать приложение на основе UITableViewController с источником данных JSON в Xcode 4. Я импортировал инфраструктуру JSON и определил NSMutableArray, чтобы заполнить его ответом:

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {

[connection release];

NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
[responseData release];

items = [responseString JSONValue];

[self.tableView reloadData];
}

I Все прошло хорошо, но когда я пытаюсь получить доступ к массиву предметов в функции

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

, это приводит к сбою моего приложения.

В чем может быть проблема?Заранее спасибо!

ОБНОВЛЕНИЕ: Я изменил часть кода, заполняющую массив, и это решило проблему сбоя: NSMutableArray * a = [responseString JSONValue];

for(NSDictionary *it in a) {

    [items addObject:it];
}

Но я все еще не понимаюне знаю почему ...

1 Ответ

0 голосов
/ 30 сентября 2011

Это выглядит так, как будто вы присваиваете JSON-значение переменной экземпляра. Объект автоматически освобожден («JSONValue» не содержит слов alloc, init или copy), поэтому в ближайшем будущем он исчезнет.

Попробуйте добавить свойство для вашего объекта: Заголовок:

@property (nonatomic, retain) NSArray *items;

Реализация:

@synthesize items;

...

self.items = [responseString JSONValue];

...

- (void)dealloc {
    ...
    self.items = nil;
    [super dealloc];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...