gpt4 book ai didi

ios - 将参数传递给作为参数的选择器

转载 作者:行者123 更新时间:2023-11-29 10:40:12 25 4
gpt4 key购买 nike

我有以下方法

-(void)changeLevelWithTimeInterval:(NSTimeInterval)timeInterval withLevel:(NSUInteger)level{

[NSTimer scheduledTimerWithTimeInterval:timeInterval
target:self
selector:@selector(changeLevel:)
userInfo:nil
repeats:NO];
}

我想用上面方法的级别参数调用 changeLevel:(NSUInteger)level 方法。

我试过了

[self performSelector:@selector(changeLevel:) withObject:level]

并试图将其作为参数传递,但它不起作用。

最佳答案

performSelector:withObject:将指针对象(也称为 id)作为参数,因此无法传入 NSUInteger。作为参数,作为 NSUInteger只是一个 typedeffed unsigned int .一种特殊的解决方法是将关卡封装在 NSNumber 中。对象,并得到 intValueNSNumberchangeLevel:方法。

它可能是:

NSNumber *levelNumber = [NSNumber numberWithInt:(int)level];
[self performSelector:@selector(changeLevel:) withObject:levelNumber];

并更改changeLevel:的签名和实现如下:

-(void)changeLevel:(NSNumber*)levelNumber{
int level = [levelNumber intValue];
//do anything you want with the level..
}

要在间隔后触发该方法,您可以尝试:

[self performSelector:@selector(changeLevel:) withObject:levelNumber afterDelay:timeInterval];

而不是直接安排定时器。

关于ios - 将参数传递给作为参数的选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24921436/

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