动态创建NSMutableArray,并在对象上使用带参数的选择器

时间:2013-07-07 16:42:37

标签: ios objective-c uiview nsmutablearray selector

我正在创建一个应用程序,其中我使用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

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

由于变量名在编译过程中消失了,你基本上不能这样做(当然,除非变量是实例变量,否则它们的名称会被保留​​,但是你仍然不想这样做,我“当然。”

关于选择器和字符串问题:为什么不使用NSStringFromSelector()NSSelectorFromString()- [NSObject performSelector:withObject:]

SEL s = NSSelectorFromString([selectorsArray objectAtIndex:0]);
[someObject performSelector:s withObject:42];