我们如何使用NSThread和NSNotification的组合?

时间:2011-12-29 11:48:58

标签: objective-c ios multithreading nsnotifications

我正在做一个应用程序,其中来自用户的图像被一起拍摄并保存在NSMutableArray中。 即使有一张图片开始播放,我也需要逐张将图片上传到服务器though images are taken together

我正在使用[NSThread detachNewThreadSelector:@selector(uploading:) toTarget:self withObject:imagearray];逐个上传图片。我需要向用户显示progressview,因为图像是逐个上传的。

上传一张图片后如何通知?

或者除了NSThread + NSNotification之外还有其他任何有用的场景吗?

2 个答案:

答案 0 :(得分:0)

如果您不知道有多少听众,您应该使用通知,并且您只需发布有关内容的通知。在您的情况下,您可能只有一个视图控制器,因此不需要使用通知,因此只需为委托创建一些协议并在视图控制器中实现它。如果您需要更新UI,那么您还应该使用performSelectorOnMainThread调用所有委托方法。

答案 1 :(得分:0)

我喜欢使用类似于“委托”范例的东西,但是考虑线程而不是对象。因此,上传线程在主线程上委托,因为它是用于更改用户界面的线程。 例如,上传线程可以发送部分上传进度的消息

[self performSelectorOnMainThread:@selector(uploadProgression:) 
        withObject:foo waitUntilDone:NO]

或完成每个完整的上传

[self performSelectorOnMainThread:@selector(uploadDidEnd:) withObject:foo
        waitUntilDone:YES]

我想您不必停止上传以更新progessView中的部分进度,但您需要在上传结束时等待,以免重复上传线程启动新上传。