让其他班级知道数据何时完成下载

时间:2013-09-02 00:03:56

标签: ios objective-c

我有一个单独的类,它从我的主视图控制器调用并开始下载json数据并将其解析为一个数组(实例变量)异步

有什么办法可以在完全下载完这个数据并将这个数组传回后通知我的视图控制器吗?

我尝试在我的viewdidload方法中使用一些循环和睡眠计时器来等待数据下载,但这没有帮助

3 个答案:

答案 0 :(得分:1)

您应该为此目的使用代理。只需谷歌查找有关代表的详细信息。这是一个简单的tutorial

基本思路是将主视图控制器的句柄传递给子类,子类在处理完json后通知主视图控制器,并使用委托将结果发送回主视图控制器。

希望这有帮助。

答案 1 :(得分:0)

我认为委托是有用的,但更好的选择是使用块api来更好地编写代码。      dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0),^ {

              // data downloading
        dispatch_async(dispatch_get_main_queue(), ^{

              // downloading data use

        });
    }); 

希望这对你来说是完全有用的。

答案 2 :(得分:0)

使用通知中心模式。

下载数据后,通过通知模式通知ViewController。

例如。

[[NSNotificationCenter defaultCenter] postNotificationName:@" SampleNotification"对象:ArrayObject的];

将此代码添加到数据json解析类并传递Array对象。

将以下代码添加到ViewController类中。获取Array对象。 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(smapleMethod :) name:@" SampleNotification"对象:无];

- (void)smapleMethod:(NSNotification *)通知{

 NSString * message=notification.object;
NSLog(@"Message =%@",message);

}