使用UITextView调用dispatch_async

时间:2012-02-27 23:34:31

标签: ios

我正在尝试使用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中的文本,最后两个不。

我在这里遗漏了一些东西,但我无法弄清楚是什么。

2 个答案:

答案 0 :(得分:0)

根据错误消息,异步调用没有任何问题。它声明在呼叫时释放descriptionimageViewinfo。检查您的保留/释放。

另一种可能性是你以某种方式在运行过程中解除分配info对象。这可能发生在例如如果您的getPavillionInfo方法出于某种原因解除分配旧的info对象。

答案 1 :(得分:0)

语法上没有任何错误,所以我猜测问题出在[PADataSource getPavillionInfo]的返回值中。描述或照片已经发布。

这告诉你什么?

   NSLog(@"info.description: %@",info.description);
   NSLog(@"info.photo: %@",info.photo);