将函数中定义的变量传递给NSTimer函数objective-c

时间:2016-07-26 21:42:38

标签: ios objective-c

我在我的函数中定义了一个变量,并尝试将其传递给nstimer。这可能吗?我担心的是函数被从回调堆栈中删除,并且变量不再存在于内存中(因为我们在实际调用在先前方法中创建的参数上之前等待了一段时间)这是一个例子:

...
static NSTimer *oldTimer;

-(void)someFunction
{
    SKEmitterNode *left = [SKEmitterNode nodeWithFileNamed:leftParticle];

    if (oldTimer != nil)
    {
    [oldTimer invalidate];
    }

    oldTimer = [NSTimer scheduledTimerWithTimeInterval:sec target:self selector:@selector(doSomething:) userInfo:[NSArray arrayWithObjects: left, nil] repeats:NO];
}

-(void)doSomething:(NSTimer*)timer
{
    [[[timer userInfo] objectAtIndex:0] removeFromParent];
}

1 个答案:

答案 0 :(得分:0)

正如Patrick Goley所说,NSTimer保留了userInfo,使其在选择器方法中可用。再次感谢Patrick!