8000 GitHub - tomersh/TheWrapper: An objective C utility that lets you add a wrapper to any function.
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

tomersh/TheWrapper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TheWrapper

An objective C utility that lets you add a wrapper to any function.

##What is it?

Suppose you have the following method

//MyClass.m

-(void) foo {
  NSLog(@"My name is Mike");
}

with TheWrapper you can add a wrapper to foo in runtime. Just add the following code before the first call to the function.

//MyClass.m

#import "TheWrapper.h"

+(void) initialize {
    [TheWrapper addWrappertoClass:[MyClass class] andSelector:@selector(foo) withPreRunBlock:^(id<NSObject> zelf, id firstArg, ...) {
    {
        NSLog(@"Hi,");
    }
    andPostRunBlock:^id(id<NSObject> zelf, id functionReturnValue, id firstArg, ...) {
    {
        NSLog(@"Bye.");
    }];
}

Now, calling foo will print

[self foo];

//Hi,
//My name is Mike
//Bye,

The original function's return value is accessible to the PostRunBlock via the functionReturnValue parameter. If you wish to return the original return value, just return it from the PostRunBlock.

##Examples NanoProfiler is the first public usage of theWrapper.

##Known issues

  1. No arc support
  2. Wrapping a method that is only implemented in superclass results in a EXC_BAD_ACCESS.

About

An objective C utility that lets you add a wrapper to any function.

Resources

License

Stars

Watchers

Forks

Packages

No packages published
0