Ajay Pandey
Ajay Pandey

Reputation: 259

How do blocks differ from normal methods and functions in Objective-C?

What is the advantage of using blocks over normal methods and functions in Objective-C? I've read the documentation, but I can't find specific uses of blocks instead of other language features.

I'm sure that I've missed something, so could someone explain the advantages of blocks in a simpler way than the existing documentation?

Upvotes: 13

Views: 10799

Answers (2)

Brad Larson
Brad Larson

Reputation: 170319

I like Apple's "A Short Practical Guide to Blocks" as an introduction to the concept.

In addition, almost all of the resources pointed to in response to the question "Suggested resources for learning about blocks in Snow Leopard" would apply here.

On top of the resources there, I recommend the articles "Cocoa for Scientists (Part XXVII): Getting Closure with Objective-C" and "Cocoa for Scientists (XXXIII): 10 Uses for Blocks in C/Objective-C" by Drew McCormack, as well as "Programming with C Blocks" by Joachim Bengtsson.

The WWDC 2010 videos for sessions 206 - "Introducing Blocks and Grand Central Dispatch on iPhone" and 211 - "Simplifying iPhone App Development with Grand Central Dispatch" are well worth watching too.

Upvotes: 10

Jasarien
Jasarien

Reputation: 58448

Blocks are a way of wrapping up a piece of code and effectively storing it for later use. A block is commonly used in place of a call back function. Newer APIs in the iPhone SDK use blocks this way. The API will take a "block" of code that it will run on completion.

It saves you having to create your own threads and maintain the state of each thread, manage locks, setup autorelease pools etc.

When used with the Grand Central Dispatch (GCD) API blocks can be run on queues and entire portions of code can be made to run asynchronously with very little effort, but still keeping the robustness that is required for multithreaded code.

Upvotes: 13

Related Questions