Pra*_*n S 2 iphone cocoa asynchronous objective-c
我正在创建一个应用程序,每页显示8个缩略图,它可以有n页.这些缩略图中的每一个都是UIViews并添加到UIScrollView中.但是我已经使用Apple示例代码实现了Paging.
问题:
另外我想提一下,当创建缩略图时,我会触发图像的异步下载,并在下载完成时调用委托方法.
让我知道我必须使选项更具响应性和更新UI而不影响触摸操作的选项.页面控件适用于延迟加载缩略图网格.
TIA,
Praveen S.
Kaz*_*oto 10
Grand Central Dispatch易于用于后台加载.但GCD仅适用于iOS4之后.如果你必须支持iOS3,performSelectorInBackground/performSelectorOnMainThread或NSOperationQueue是有帮助的.
并且,要小心几乎UIKit类不是线程安全的,除非绘制到图形上下文.例如,UIScrollView不是线程安全的,UIImage imageNamed:不是线程安全的,但是UIImage imageWithContentsOfFile:是线程安全的.
dispatch_queue_t mainQueue = dispatch_get_main_queue();
dispatch_queue_t concurrentQueue =
dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(concurrentQueue, ^{
dispatch_apply([thumbnails count], concurrentQueue, ^(size_t index) {
Thumbnail *thumbnail = [thumbnails objectAtIndex:index];
thumbnail.image = [UIImage imageWithContentsOfFile:thumbnail.url];
dispatch_sync(mainQueue, ^{
/* update UIScrollView using thumbnail. It is safe because this block is on main thread. */
});
}
/* dispatch_apply waits until all blocks are done */
dispatch_async(mainQueue, ^{
/* do for all done. */
});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3023 次 |
| 最近记录: |