Objective c 如何结合使用NSThread和NSNotification?
我正在做一个应用程序,其中来自用户的图像被收集在一起并保存在Objective c 如何结合使用NSThread和NSNotification?,objective-c,ios,multithreading,nsnotifications,Objective C,Ios,Multithreading,Nsnotifications,我正在做一个应用程序,其中来自用户的图像被收集在一起并保存在NSMutableArray中。 只要有一张图片开始出现,我就需要一张一张地将图片上传到服务器上,尽管图片是集中在一起的 我正在使用[NSThread detachNewThreadSelector:@selector(上载:)到target:self with object:imagearray]以逐个上载图像。我需要向用户显示progressview,因为正在逐个上载图像 上传一张图片后如何通知 或者,除了NSThread+NSNo
NSMutableArray
中。
只要有一张图片开始出现,我就需要一张一张地将图片上传到服务器上,尽管图片是集中在一起的
我正在使用[NSThread detachNewThreadSelector:@selector(上载:)到target:self with object:imagearray]代码>以逐个上载图像。我需要向用户显示progressview,因为正在逐个上载图像
上传一张图片后如何通知
或者,除了NSThread+NSNotification之外,还有其他任何场景对此更有用吗 您应该使用通知,以防您不知道有多少侦听器,而您只是发布有关某个内容的通知。在您的情况下,您可能只有一个视图控制器,因此不需要使用通知,所以只需为代理创建一些协议并在视图控制器中实现它。如果需要更新UI,那么还应该使用performSelectorOnMainThread
调用所有委托方法。我建议使用类似于“委托”范例的方法,但考虑线程而不是对象。因此,上传线程在主线程上进行代理,因为它是进行用户界面更改的线程。
例如,上传线程可以发送部分上传进度的消息
[self performSelectorOnMainThread:@selector(uploadProgression:)
withObject:foo waitUntilDone:NO]
或者对于完成的每个完整上载
[self performSelectorOnMainThread:@selector(uploadDidEnd:) withObject:foo
waitUntilDone:YES]
我想您不必停止上传来更新progessView中的部分进度,但您需要等待上传结束,以免重复启动新上传的上传线程。是的,我正在调用[self-performSelectorOnMainThread:@selector(uploadProgression:)withObject:foo waitUntilDone:NO]
仅一次,每次此选择器完成时,它都应调用[自执行选择器OnMainThread:@selector(uploadDidEnd:)with object:foo waitUntilDone:YES]
,然后再次返回到uploadProgtession
,并继续arraycount