【发布时间】:2011-04-10 15:37:26
【问题描述】:
我有一个类,其唯一目的是从网上下载特定文件,将其存储在本地,然后返回存储文件的本地路径。
我根据我是否有相关文件的本地副本来使用这个类,如果需要下载多个文件,我有时会同时调用它多次。我的使用方式很简单
Loader *l = [[Loader alloc] initWithDelegate:self];
[l downloadFile:someFile];
[l release];
问题是,为了在下载完成之前保留它,我实际上是在课堂上做[self retain];,然后在完成后做[self autorelease];。不过,这感觉很hacky。人们如何处理这个问题?
【问题讨论】:
-
我做过类似的事情,但我将 NSOperation 和 NSOperationQueue 包装在一个单例中。这种方法处理内存和线程。如果操作已经在进行中,我首先查询 OperationQueue,如果是我忽略请求,这样多次调用它不会产生多个线程或停止下载一半的文件。
标签: iphone objective-c ios asynchronous