块如何与Objective-C中的常规方法和函数不同?

时间:2010-08-23 09:20:05

标签: iphone objective-c cocoa-touch

在Objective-C中使用块优于普通方法和函数有什么优势?我已经阅读了文档,但是我找不到块的具体用法而不是其他语言功能。

我确信我错过了一些东西,所以有人能以比现有文档更简单的方式解释块的优点吗?

2 个答案:

答案 0 :(得分:13)

块是一种包装代码并有效存储以供以后使用的方法。通常使用块来代替回调函数。 iPhone SDK中较新的API使用这种方式阻止。 API将采用“块”代码,它将在完成时运行。

它可以节省您必须创建自己的线程并维护每个线程的状态,管理锁,设置自动释放池等。

当与Grand Central Dispatch(GCD)一起使用时,API块可以在队列上运行,并且可以使用非常少的工作异步运行代码的整个部分,但仍然保持多线程代码所需的健壮性。

答案 1 :(得分:10)

我喜欢Apple的"A Short Practical Guide to Blocks"作为概念的介绍。

此外,回答问题"Suggested resources for learning about blocks in Snow Leopard"所指出的几乎所有资源都适用于此。

除了那里的资源,我推荐Drew McCormack撰写的文章"Cocoa for Scientists (Part XXVII): Getting Closure with Objective-C""Cocoa for Scientists (XXXIII): 10 Uses for Blocks in C/Objective-C",以及Joachim Bengtsson撰写的"Programming with C Blocks"文章。

会话206的WWDC 2010 videos - “在iPhone上推出Block和Grand Central Dispatch”和211 - “使用Grand Central Dispatch简化iPhone应用程序开发”也非常值得关注。