使用dispatch_sync和在线编写代码(没有dispatch_sync的非块)之间有什么区别吗?

时间:2012-03-22 07:42:01

标签: iphone objective-c grand-central-dispatch

我正在制作ipad的app-book,就像应用杂志一样。 现在我正在使用ScrollView并想要加载许多1024 * 768图像(大约100张图像),(如您所知,如果所有图像都是一次加载的,那是不可能的。) 所以我只加载5页(当前页面和2个前页面和2个下一页面)并删除其他页面。

但是,我有一个问题。

我创建了用于加载页面的方法('loadTitlePage'),当我想加载所有页面时,我必须调用此方法。 所以,我不能使用dispatch_async而是dispatch_sync。

使用dispatch_sync和在线编写代码(没有dispatch_sync的非块)之间有什么区别吗?

这是我的代码。

[self loadTitlePage:currentPageNo];
dispatch_queue_t dqueue = dispatch_queue_create("scrollLoadTitlePage", NULL);
dispatch_sync(dqueue, ^{
    [self loadTitlePage:currentPageNo-2]; });
dispatch_sync(dqueue, ^{
    [self loadTitlePage:currentPageNo-1]; });
dispatch_sync(dqueue, ^{
    [self loadTitlePage:currentPageNo+1]; });
dispatch_sync(dqueue, ^{
    [self loadTitlePage:currentPageNo+2]; });
dispatch_sync(dqueue, ^{
    [self removeTitlePage:currentPageNo-3 withNo:currentPageNo+3]; });

1 个答案:

答案 0 :(得分:1)

您可以在此处阅读:using dispatch_sync in Grand Central Dispatch

总之.. dispatch_sync相当于一个互斥锁..在你的情况下我认为没有任何区别