gpt4 book ai didi

objective-c - 你能在一个选择器中存储多个方法吗?

转载 作者:可可西里 更新时间:2023-11-01 04:27:39 24 4
gpt4 key购买 nike

我有一个类似拼图的程序,您可以按照正确的顺序将方 block 放在一起,尝试完成拼图。当你完成后,你可以点击播放按钮,然后程序会让一个小人在你的积木所在的地方走过你的积木。因此,如果您向上放置一个方 block ,向右放置一个方 block ,向下放置一个方 block ,然后点击播放,程序将调用然后调用向上移动、向右移动、向下移动的方法。

当我的程序运行并试图弄清楚要调用哪些方法以及以什么顺序调用时,我需要按照程序找到它们的顺序存储这些方法,基本上,我不能让程序立即正确调用这些方法当它弄清楚要调用什么方法时,否则在 block 上移动的人会快速移动,我想将这些方法存储在某种方法数组中(我认为这就像某种选择器)这样我就可以在我的程序确定其将要执行的所有操作后,在特定时间间隔内调用每个方法。

我的正常程序现在看起来像这样

if(random requirements)
[self moveUp]

else if(random requirements)
[self moveDown]

else if (random requirements)
[self moveRight]

else if(random requirements)
[self moveLeft]

好吧,我宁愿这个看起来像这样

if(random requirements)
SEL selector addMethod:[self moveUp]

else if(random requirements)
SEL selector addMethod:[self moveDown]

else if (random requirements)
SEL selector addMethod:[self moveRight]

else if(random requirements)
SEL selector addMethod:[self moveLeft]

显然这不是真正的语法,但你能理解我在找什么吗?

最佳答案

您不能在一个选择器中存储多个选择器,但是制作一个选择器数组是一件非常有效的事情。最简单的方法是将选择器的字符串表示形式存储在 NSMutableArray 中,然后在遍历数组的代码中从字符串创建选择器。

NSMutableArray *selectorNames = [NSMutableArray array];
if(random requirements)
[selectorNames addObject:NSStringFromSelector(@selector(moveUp))];
if(random requirements)
[selectorNames addObject:NSStringFromSelector(@selector(moveDown))];
...
for (NSString *selectorName in selectorNames) {
SEL nextSelector = NSSelectorFromString (selectorName);
// Now you can invoke your selector
}

除了选择器之外的另一个选项是 using blocks . block 也非常擅长封装操作,您不需要单独存储它们的目标。

关于objective-c - 你能在一个选择器中存储多个方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11457224/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com