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

Aja*_*dey 13 iphone cocoa-touch objective-c

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

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

Jas*_*ien 13

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

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

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

  • @Ajay Pandey - 什么特定语言给你带来麻烦?回调是响应应用程序或系统内发生的事件而触发的方法或函数.块可以让您定义响应事件而发生的操作,但不是让您编写单独的方法或函数,而是允许您在为该事件设置侦听器的位置编写处理代码.这可以节省大量代码,使您的应用程序更有条理. (4认同)

Bra*_*son 10

我喜欢Apple的"块短实用指南"作为概念的介绍.

此外,几乎所有针对"学习雪豹区块的建议资源"这一问题所指出的资源都适用于此.

除了那里的资源,我推荐文章"可可科学家(第XXVII部分):用Objective-C实现关闭""Cocoa for Scientists(XXXIII):10用于C/Objective-C中的块"作者:Drew McCormack ,以及Joachim Bengtsson的"C块编程".

WWDC 2010条的视频为会议206 - "引入块和大中央调度的iPhone"和211 - "简化iPhone应用程序开发与中央大派送"是非常值得关注了.

  • 总结答案? (2认同)