How do you pass one method as a parameter to another method? I’m doing this across classes.
Class A:
+ (void)theBigFunction:(?)func{
// run the func here
}
Class B:
- (void)littleBFunction {
NSLog(@"classB little function");
}
// somewhere else in the class
[ClassA theBigFunction:littleBFunction]
Class C:
- (void)littleCFunction {
NSLog(@"classC little function");
}
// somewhere else in the class
[ClassA theBigFunction:littleCFunction]
The type you are looking for is selector (
SEL) and you get a method’s selector like this:If the method takes parameters, you just put
:where they go, like this:Also, methods are not really functions, they are used to send messages to specific class (when starting with +) or specific instance of it (when starting with -). Functions are C-type that doesn’t really have a “target” like methods do.
Once you get a selector, you call that method on your target (be it class or instance) like this:
A good example of this is
UIControl‘s addTarget:action:forControlEvents: method you usually use when creatingUIButtonor some other control objects programmatically.