On 22 Feb 2013, at 8:56 AM, Dave <d...@looktowindward.com> wrote:

> A (Background) thread has two choices at this stage:
> 
> 1.  Call aSyncComputePIToAZillionPlacesWithDelegate and provide a delegate 
> that will be called back with the result.
> 
> 2.  Call syncComputePIToAZillionPlaces get the result inline.
> 
> As long as the Background Thread doesn't have more work to do in parallel 
> with the Compute PI operation, why is option 2 better than option 1.
> 
> I think that option 1 is by far the best solution and I can't understand why 
> anyone would choose option 2!!

You misconceive what Apple and the other replies are telling you. The whole 
point of the async API is that _you don't create a background thread at all._ 
You call the method that starts the async process on the main thread, the 
implementing class does all the background processing as/if needed (and does it 
correctly), and it reports progress, errors, and completions on the main thread.

You get:

* No threading issues (Apple has already done them correctly)
* A service that can make an optimal choice between a background thread and a 
runloop source
* The ability to cancel (no threading issues)
* Progress events (no threading issues)
* The ability to detect security issues on-the-fly (no threading issues)
* Authentication (no threading issues)
* Error handling (no threading issues)
* The ability to interface with your controllers and views in a way that is 
factored out of the asynchronous process into your main-thread delegate methods 
(no threading issues)

You get none of this if you toss a synchronous call into a dispatch_async() and 
call it a day.

That's only what I can think of for NSURLConnection; your example of a 
calculation of pi is simplified to the point of being a straw man, and better 
handled with an NSOperation.

        — F

-- 
Fritz Anderson
Xcode 4 Unleashed: 4.5 supplement for free!
http://www.informit.com/store/xcode-4-unleashed-9780672333279


_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to