Can you store functions in an array in Objective C?

arrays, function, ios, objective-c, random

Solution

As for ObjC blocks you can just store them in an `NSArray` directly. Plain C functions have to be wrapped into an `NSValue`:

NSArray *functions = @[[NSValue valueWithPointer:function1], [NSValue valueWithPointer:function2]];

Then you can call them as follow, just make sure you cast it to correct signature:

((void (*)(int))[functions[RandomNum] pointerValue])(10);

Problem

I want to make an array of functions so that I could randomize the order in which these arrays happen. Could I do something like: ``` NSMutableArray *MyArray = [NSMutableArray arrayWithObjects: function1, function2, function3, nil]; ``` So that if I could do something like this; ``` RandomNum = arc4random() %([MyArray count]); MyArray[RandomNum]; ``` Thus Randomizing the order in which these functions are called in? How do I store the functions in this array?

Original source

Related problems