(Re-post on list.) On 1/23/12 1:41 AM, Jan E. Schotsman wrote: > That's great indeed, but I need the block to work with a method > parameter (an NSString object). Do I need to copy the NSString to an ivar?
No, you just use it directly. As Ken mentioned, any variable you reference in a block is automatically captured by the block and remains available for the duration of its existence - even outside the scope of the original variable declaration. (If you need to *write* to an outside variable inside a block, the variable's declaration must include a __block modifier; this and other quirks are noted in the documentation.) You *really* need to read the docs on blocks and GCD since they are the "modern" way of writing threaded code, implementing callbacks, etc. I'd start with the "Short Practical Guide to Blocks" - http://developer.apple.com/library/ios/#featuredarticles/Short_Practical_Guide_Blocks/_index.html. There are a plethora of WWDC videos from beginning to advanced on these topics, too. > if I try to pass on someString in a C struct (contextInfo) then the > compiler complains that ARC doesn't like object pointers in C structs. > I could serialize and unserialize the string. Or is there a better way? Just use the NSString * right in the block - no need for structs, serialization, or anything. That's why blocks are so useful. -- Conrad Shultz Synthetiq Solutions www.synthetiqsolutions.com _______________________________________________ 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