我正在尝试使用dispatch_async从外部源获取数据,它可用于更新UILabel,但没有别的。
这种情况在UILabel和UITextView
之间有何区别?以下是相关代码:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, NULL), ^{
/* Download stuff */
PAPavillionInfoModel *info = [PADataSource getPavillionInfo];
dispatch_async(dispatch_get_main_queue(), ^{
/* Send UI updates back to the main thread. */
capacity.text = info.capacity;
inauguration.text = info.inauguration;
architect.text = info.architect;
inspiration.text = info.inspiration;
// THESE NEXT TWO LINES GIVE AN ERROR [message sent to deallocated instance]
description.text = info.description;
imageView.image = info.photo;
});
});
getPavillionInfo转到PHP页面并检索json数据并解析它。
块中的第一行到ui线程工作。他们更新UILables中的文本,最后两个不。
我在这里遗漏了一些东西,但我无法弄清楚是什么。
答案 0 :(得分:0)
根据错误消息,异步调用没有任何问题。它声明在呼叫时释放description
和imageView
或info
。检查您的保留/释放。
另一种可能性是你以某种方式在运行过程中解除分配info
对象。这可能发生在例如如果您的getPavillionInfo
方法出于某种原因解除分配旧的info
对象。
答案 1 :(得分:0)
语法上没有任何错误,所以我猜测问题出在[PADataSource getPavillionInfo]的返回值中。描述或照片已经发布。
这告诉你什么?
NSLog(@"info.description: %@",info.description);
NSLog(@"info.photo: %@",info.photo);