objective-c - 将字符串传递给 NSTimer 的操作方法

标签 objective-c cocoa nstimer

我正在尝试使用addCloud:方法在选择器上使用数字参数,但我无法收到图像名称的正确输出。

正在加载图片资源:“cloud<__NSCFTimer: 0x170162400>.png”

- (void)level:(float)interval sprite:(NSString *)charSprite
{

    if ([charSprite isEqualToString:@"1"]) {

        [NSTimer scheduledTimerWithTimeInterval:k1 target:self selector:@selector(addCloud:) userInfo:charSprite repeats:YES];


    }

}

- (void)addCloud:(NSString *)nnumber
{
   NSString *nvalue = [NSString stringWithFormat:@"cloud%@.png",nnumber];
    _cloud = [SKSpriteNode spriteNodeWithImageNamed:nvalue];
    [_cloud setScale:0.4];

    _cloud.position = CGPointMake(self.frame.size.width + _cloud.size.width/2, actualY);
    [self addChild:_cloud];
}

最佳答案

计时器回调的签名应为-(void)addCloud:(NSTimer *)timer。计时器回调不会直接接收提供给 userInfo 参数的值;他们总是收到 NSTimer 引用。您可以向计时器询问其 userInfo 属性,然后可以将其转换为您要查找的 NSString:

NSString *spriteIndex = timer.userInfo;
NSString *spriteName = [NSString stringWithFormat:@"cloud%@.png", spriteIndex];

关于objective-c - 将字符串传递给 NSTimer 的操作方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25410120/

相关文章:

iphone - iPhone:App运行时,iPod控件呈灰色显示

cocoa - 使用 Cocoa 的彩色 iCal 样式复选框

ios - iOS如何每分钟一分钟调用一次方法

objective-c - 如何让我的应用程序在后台运行 NSTimer?

ios - 第二个 TableView 没有出现在 ScrollView 中

objective-c - 使用 NSWorkspace 关闭文件

cocoa - 是否可以使用 FSEvents 获取文件夹已移动的通知?

iphone - NSTimer,保留还是不保留

ios - 访问 NSObject 子类中某些类型的问题

xcode - IBOutlets 未在 NSViewController 中设置