Доступ к проблеме с NSDictionary - PullRequest
       20

Доступ к проблеме с NSDictionary

0 голосов
/ 12 августа 2011

У меня следующая проблема: У меня есть NSDictionary здесь:

@interface ENSListViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>
{
NSDictionary* ensList;
}

@property (nonatomic, retain) IBOutlet NSDictionary* ensList;

Теперь у меня есть UITableView, в котором я хочу установить число или строки здесь:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
[self LoadENSList];
NSLog(@"%@", ensList); //Crash Bad Exec
return 2000;
}

Я загружаю ENSList здесь:

- (void) LoadENSList
{
    if (ensList == nil)
    {
        NSDictionary *ensListFirstReturn = [ENSHandler GetENSListForFolderType:folder_type andFolderID:folder_id];
        BOOL success = [[ensListFirstReturn objectForKey:@"success"] boolValue];  
        if (success)
        {
            ensList = [ensListFirstReturn objectForKey:@"return"];
            NSLog(@"%@", ensList);
        }
        else
        { 
            [MyAlert ShowSimpleAlert:@"Fehler" andText:@"ENS-Ordner-Liste konnte nicht geladen werden"];
        }
    }
}

Теперь моя проблема:

Список загружается правильно с первого места. Первый «NSLOG ()» дает мне все правильные данные. Так как метод LoadENSList заканчивается, кажется, у ensList есть проблемы, потому что я получил BAD EXE-Error во втором NSLOG ().

Почему?

Ответы [ 2 ]

4 голосов
/ 12 августа 2011

В этой строке:

ensList = [ensListFirstReturn objectForKey:@"return"];

Вы не используете средство доступа к свойству. Это означает, что массив автоматически освобождается и больше не существует во время следующего цикла событий.

Вам нужно изменить это на:

self.ensList = [ensListFirstReturn objectForKey:@"return"];
1 голос
/ 12 августа 2011

Кажется, проблема управления памятью ..

Попробуйте

ensList = [[ensListFirstReturn objectForKey:@"return"] copy];

в loadENSList.

MfG

Sideswipe

...