Skip to content
Objective-C C Shell
Find file
New pull request
#1 Compare This branch is 9 commits behind plausiblelabs:master.
Fetching latest commit...
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
Other Sources Allow parameters to be passed into from the command line.


PLBlockIMP provides an open-source implementation of imp_implementationWithBlock(), using vm_remap()-based trampolines as described in Implementing imp_implementationWithBlock.

PLBlockIMP will generate a lightweight, high-performance function pointer trampoline that may be used to register a block as an Objective-C method implementation. Mac OS X 10.6+ and iOS 4.0+ are supported.

Additionally, PLBlockIMP contains a generic trampoline allocator and set of generator scripts that may be used to implement custom trampoline pages on Mac OS X and iOS.

PLBlockIMP is released under the MIT license.

Sample Use

Use a block to add a new method to NSObject (based on Mike Ash's MABlockClosure example):

int captured = 42;
id block = ^(id self) { NSLog(@"captured is %d", captured); };
block = [block copy];
class_addMethod([NSObject class], @selector(my_printCaptured), pl_imp_implementationWithBlock(block), "v@:");

Additionally, pl_imp_getBlock() may be used to fetch the block associated with an IMP trampoline, and pl_imp_removeBlock() to discard a trampoline and its associated block reference.

Something went wrong with that request. Please try again.