0

我正在轮询一个 HTTP API - 它一次返回一个项目,实时(大约每 4 秒)。收到每个项目后,我希望填充一个新的 UITableView 单元格。收到的项目的完整列表必须保留在类属性中,我猜是 NSMutableArray。将 NSMutableArray 初始化为类属性、在新信息进入时对其进行更新、然后使用计数更新新 UITableViewCell 的最佳方法是什么?以下是我向 NSMutableDictionary 添加内容的方式:

NSMutableDictionary *messageContents = [[NSMutableDictionary alloc] init];
[messageContents retain];
[messageContents setValue:messageText forKey:@"text"];
[messageContents setValue:image forKey:@"image"];
[self addMessageToDataArray:messageContents];

这是将对象填充到数组中的方法:

- (void)addMessageToDataArray:(NSArray *)messageDictionary {
    [self.messageDataArray addObject:messageDictionary];
    NSLog(@"count = %@", [self.messageDataArray count]);
    [self reloadTableData];
}

此时,对 messageDataArray 类属性调用 count 会使应用程序崩溃。我非常习惯在 Actionscript 中使用数组,Obj-C 显然完全不同。请解释将 NSMutableArray 实例化为类属性的方法,用 NSMutableDictionary 填充它,然后找到 NSMutableArray 计数(将实时动态更新),以便我可以使用该信息更新 UITableView(动态)。

或者......告诉我我很傻,并提出一个更简单的解决方案。

4

1 回答 1

0

根据您的描述,我猜您在使用 messageDataArray 之前没有分配它。

表视图(控制器?)类的 init 函数应该有这样一行

messageDataArray = [[NSMutableArray alloc] initWithCapacity:20];

还值得检查一下你[messageDataArray release];的 dealloc 方法。

于 2009-06-13T19:32:24.963 回答