我正在创建一个应用程序,其中我使用 NSMutableArray
来存储一些对象。要做到这一点,乍一看没有问题:
ArrayOfViews = [[NSMutableArray alloc] init];
[ArrayOfViews addObject:...];
但我的对象是我创建的 UIView。例如,我有一个名为“Level1”的文件。我如何从“Level1”添加对象,例如:
Level1 * level1view;
在我的 NSMutableArray 的同一个 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
感谢您的帮助!
最佳答案
由于变量名称在编译期间消失了,所以您基本上无法执行此操作(当然,除非变量是实例变量,在这种情况下它们的名称会被保留,但您仍然不想这样做,我我确定。)
至于选择器和字符串问题:为什么不使用 NSStringFromSelector()
、NSSelectorFromString()
和 - [NSObject PerformSelector:withObject:]
?
SEL s = NSSelectorFromString([selectorsArray objectAtIndex:0]);
[someObject performSelector:s withObject:42];
关于ios - 动态创建 NSMutableArray,并在对象上使用带参数的选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17514067/