Aar*_*ron 4 iphone objective-c
我是Objective-C的新手,我正在寻找eval像我在Matlab中使用过的声明.
如果您对此不熟悉,可以构建一个字符串,然后构建一个eval字符串,将其视为一行代码.
下面是一个示例,您希望根据变量foo = 3更改一系列4个按钮之一的背景颜色,并将按钮命名为button1,button2等.
NSString* buttonEval = [[NSString alloc] initWithFormat:@"[button%d setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];", foo]
Run Code Online (Sandbox Code Playgroud)
是否有一个声明将对此字符串进行评估,就像它是一行代码一样?
Objective-C 2.0本身没有eval语句; 然而; 还有一些替代路径可供您使用.
在这种特殊情况下,您很可能需要调用和迭代; 正如Perspx所暗示的那样.
在更一般的情况下; 调用是从选择器创建的,选择器可以从字符串创建; 尽管Objective-C是一种编译语言,但是只要它们被赋予了名称,它们就可以被跟踪,并且因此,它们可以被跟踪.创建一个类似 eval的函数是完全可能的.
没有; 虽然Objective-C是一种动态类型语言,但它仍然是一种编译语言,而不是像Javascript或PHP这样的语言,不像解释语言.
对于上面的示例,您可以使用数组来存储指向UIButton实例的指针:
buttonArray = [[NSMutableArray alloc] init];
...
UIButton *aButton; //Reference to a UIButton instance
[buttonArray addObject:aButton];
Run Code Online (Sandbox Code Playgroud)
然后检索指向UIButton要调用方法的指针.
[[buttonArray objectAtIndex:foo] setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2332 次 |
| 最近记录: |