我正在创建一个应用程序,其中我使用NSMutableArray
来存储一些对象。要做到这一点,首先看看没问题:
ArrayOfViews = [[NSMutableArray alloc] init];
[ArrayOfViews addObject:...];
但我的目标是UIViews,我创造了。例如,我有一个名为“Level1”的文件。我如何从“Level1”添加一个对象,如:
Level1 * level1view;
从我的NSMuttableArray在同一个UIViewcontroller中解析?
就像一种:
for (i = 0, i < max, i++)
{
[ArrayOfViews addObject:[objectWithName:[NSString stringWithFormat:@"level%iview", i]]];
}
我不知道如何用良好的编码来编写它。
其次,要使用带有选择器和参数的对象,我该怎么办?
因为我试过了:
NSString * futureSelector = [NSString stringWithFormat:@"Level%iappearswithTime:", number];
SEL s = NSSelectorFromString(futureSelector);
NSInvocation * invoc = [[NSInvocation alloc] init];
[invoc setSelector:s];
[invoc setArgument:&t atIndex:1];
[invoc setTarget:[ArrayOfViews objectAtIndex:number]];
[invoc invoke];
要替换此类代码:
[level1view Level1appearswithTime:t];
其中变量t是NSTimeInterval
感谢您的帮助!
答案 0 :(得分:1)
由于变量名在编译过程中消失了,你基本上不能这样做(当然,除非变量是实例变量,否则它们的名称会被保留,但是你仍然不想这样做,我“当然。”
关于选择器和字符串问题:为什么不使用NSStringFromSelector()
,NSSelectorFromString()
和- [NSObject performSelector:withObject:]
?
SEL s = NSSelectorFromString([selectorsArray objectAtIndex:0]);
[someObject performSelector:s withObject:42];