0

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

谢谢你的帮助 !

4

1 回答 1

1

由于变量名在编译期间消失了,你基本上不能这样做(当然,除非变量是实例变量,在这种情况下它们的名字被保留,但你仍然不想这样做,我敢肯定.)

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

SEL s = NSSelectorFromString([selectorsArray objectAtIndex:0]);
[someObject performSelector:s withObject:42];
于 2013-07-07T16:47:25.887 回答