I am new to Objective-C and I am looking for an eval
statement like I have used in Matlab.
If you are not familiar with this, you can build a character string and then eval
that string, which treats it like it is a line of code.
Here is a example where you would want to change the background color of one of a series of 4 buttons based on a variable foo which = 3 and you buttons would be named button1, button2 etc.
NSString* buttonEval = [[NSString alloc] initWithFormat:@"[button%d setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];", foo]
Is there a statement the will evaluate this string as if it was a line of code?
This is not a common feature in compiled languages, which Objective C qualifies as. This is because the mechanisms and "intelligence" needed to convert source code into something the CPU can run is contained in the compiler, which is no longer around when the code runs.
There is no eval statement in Objective-C 2.0 per se; however; there are a few alternate paths open to you.
In this particular case, you most likely want an invocation and an iteration; as alluded to by Perspx.
In the more general case; invocations are created from selectors, and selectors can be created from strings; objects can, so long as they are given a name, be kept track of, and as such, in spite of Objective-C being a compiled language; creating an eval-like function is quite possible.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With