On Jan 23, 2012, at 5:17 AM, Ken Thomases wrote:

On Jan 22, 2012, at 1:24 PM, Jan E. Schotsman wrote:

Suppose I want to display a modeless choose file dialog with the beginWithCompletionHandler method.
How can I pass some context info to the handler?

Blocks capture whatever local variables you reference within them. If you reference instance variables, they capture "self" and then access the ivars from that. Just use whatever value you want, directly. That's the great thing about blocks.

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?

-method:(NSString *)someString
        {
        (void)(^handler)(NSInteger result)      =       { <uses someString > };

        [openPanel beginWithCompletionHandler: handler];
        }

I have a related question for the old beginForDirectory method:

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?

Jan E.

_______________________________________________

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