iphone - 使用 NSDictionary 访问问题

标签 iphone objective-c ios nsdictionary exc-bad-access

我有以下问题: 我这里有一个 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 似乎有问题,因为我在第二个 NSLOG() 处遇到了 BAD EXE-Error。

为什么?

最佳答案

在这一行中:

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

您不使用属性访问器。这意味着该数组是自动释放的,并且在下一个事件循环期间不再存在。

你需要把它改成这样:

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

关于iphone - 使用 NSDictionary 访问问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7042521/

相关文章:

iphone - iPhone内存管理

ios - 推送 segue 动画不起作用

ios - swift 在不同的 UnsafePointer<T> 之间进行转换

ios - 关闭应用程序后如何调试

iphone - 带有 UIcontrols 元素的自定义 View

iphone - UITableView 部分出现不同的单元格颜色

带有 Tabbar 的 iOS7 自动布局与 UIScrollView 和可缩放的 UIImageView 不工作

iphone - 将图像添加到 MapView 注释

ios - iphone/iPad 中的方向问题

ios - 弹出框演示 Controller - View 周围有间距,不适合全宽度