我正在编写代码来检查是否存在网络连接。简而言之,我想要发生的事件顺序如下:
根据我的理解,在加载Web服务的同时运行计时器需要一个带有计时器的新线程。我明白怎么做,很好。根据我的理解,结束该线程,我称[线程取消];。如何从该线程中处理内存管理。除此之外还有一个计时器。
我的另一个线程自我终止,当它发布时它会释放它的所有内容。取消是否有办法做到这一点?感谢。
答案 0 :(得分:1)
您需要在主线程中使用UIKit保留任何内容,因为UIKit组件不保证是线程安全的。因此,您的计时器和警报位于主线程中,您的网络流量位于后台线程中。后台线程将使用performSelectorOnMainThread:
变体之一与主线程进行通信。您当然可以在后台线程中使用计时器,只要它通过类似的功能与您的UI通信,并且不会尝试自己进行警报。在从主线程到后台线程的通信方面,请查看performSelector:onThread
方法。
就内存而言,您将在新线程的入口点创建一个新的自动释放池,您将在该线程的末尾消耗该池。在线程本身内,您完全像在主线程中那样管理内存,当线程终止时,它的所有内存都被释放。
有关所有详细信息,请查看NSThread
文档。 Here is Apple的内存管理文档,附有自动释放池的说明