2010-03-04 82 views
0

我正在编写代码来检查是否存在网络连接。简而言之,我想要发生的事件顺序如下:取消时线程的内存会发生什么变化?

  1. 用户从Web服务请求信息。
  2. 计时器启动,并且每秒检查一次连接是否存在。如果没有,请提出一个看法。
  3. 当信息全部从Web服务接收时,2中的计时器结束。

从我的理解,具有定时器运行,同时具有Web服务负载需要与其上的计时器一个新的线程。我明白如何做到这一点,并很好。从我的理解,结束该线程,我打电话[线程取消];。如何在该线程中关注内存管理。那里有一个计时器,等等。

我的另一个线程自行终止,当它发生时它释放它的所有内容。有没有办法做到这一点与取消?谢谢。

回答

1

由于UIKit组件不保证是线程安全的,因此您需要在主线程中保留任何使用UIKit的内容。所以,你的计时器和警报在你的主线程中,你的网络流量在后台线程中。后台线程将使用performSelectorOnMainThread:变体之一与主线程进行通信。您可以在后台线程中使用计时器,只要它通过类似的功能与您的用户界面进行通信,并且不会尝试自己执行提醒。关于从主线程到后台线程的通信,请参阅performSelector:onThread方法。

就内存而言,您将在新线程的入口点创建一个新的自动释放池,并且您将在该线程的末尾耗尽该池。在线程本身内部,您可以完全像在主线程中一样管理内存,并且线程终止其所有内存的释放。

对于所有的细节检查了NSThread文档。 Here is苹果公司的内存管理文档,附注释Autorelease池

相关问题