Skip to content

Instantly share code, notes, and snippets.

@eternalstorms
Created September 24, 2012 11:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save eternalstorms/3775556 to your computer and use it in GitHub Desktop.
Save eternalstorms/3775556 to your computer and use it in GitHub Desktop.
Pass a block as a void pointer in ARC
- (void)delete
{
void (^myBlock)() = ^{/*some block action*/};
NSBeginCriticalAlertSheet(NSLocalizedString(@"ReallyDeleteWarning", nil),
NSLocalizedString(@"Delete", nil),
NSLocalizedString(@"Cancel", nil), nil, self.window, self, nil,
@selector(deleteAlertWindow:didDismissWithCode:context:),
(__bridge_retained void *)([myBlock copy]),
NSLocalizedString(@"ReallyDeleteWarningMsg", nil));
}
- (void)deleteAlertWindow:(NSWindow *)sheet didDismissWithCode:(NSInteger)code context:(void *)ctx//(void (^)(void))block
{
void (^myBlock)() = (__bridge_transfer typeof(myBlock))ctx;
if (code == NSAlertDefaultReturn)
{
if (myBlock != nil)
myBlock();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment