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

标签 ios objective-c uiview nsmutablearray selector

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

相关文章:

ios - SpriteKit 中的垂直无限滚动背景

ios - 致命异常 : NSRangeException

ios - 如何等待动画——完成 block

ios - 如何安全地将唯一的客户 QR 码传输到业务扫描仪?

ios - 类型 'ViewController' 不符合协议(protocol) 'UITableViewDataSource'

objective-c - 使用 ARC 返回自动释放的 CFTypeRef

ios - 使用函数重新加载表/数组?

ios - SDWebImage 急切加载图像

ios - Swift:在调整大小后将 UIView 推到其下方的动态 UIView

iphone - 转换矩形 :toView: works different on iPad retina and iPad 2