在iOS中以特定间隔调用 *** 作

在iOS中以特定间隔调用 *** 作,第1张

概述我试图在Cocos3d中调用包含ccactioninterval的函数.我想在特定的时间间隔调用该函数.当我尝试NSTimer时,我发现它有时会工作,有时却不会. NSTimer makeTarget=[NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(createTargets) userInfo: 我试图在Cocos3d中调用包含ccactioninterval的函数.我想在特定的时间间隔调用该函数.当我尝试NSTimer时,我发现它有时会工作,有时却不会.

NSTimer makeTarget=[NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(createTargets) userInfo:nil repeats:YES];

这里createTargets是包含动作事件的函数.当我运行该功能时,直接工作正常一次.当我尝试安排它时出现问题.我尝试过针对相关问题已经解释的不同方法.但没有什么对我有用. . . .

这是代码

-(voID) addTargets {          NSTimer *makeTarget = [NSTimer scheduledTimerWithTimeInterval:2.0              target:self selector:@selector(createTargets) userInfo:nil repeats:YES]; }-(voID)createTargets {    CC3MeshNode *target = (CC3MeshNode*)[self getNodenamed: @"obj1"];        int minVal=-5;    int maxVal=5;        float avgVal;     avgVal = maxVal- minVal;          float Value = ((float)arc4random()/ARC4RANDOM_MAX)*avgVal+minVal ;              [target setLocation:cc3v(Value,5.0,0.0)];        CCActionInterval *moveTarget = [CC3MoveBy actionWithDuration:7.0 moveBy:cc3v(0.0,-10.0,0.0)];         CCActionInterval *removeTarget = [CCCallFuncN actionWithTarget:self selector:@selector(removeTarget:)];           [target runAction:[CCSequence actionOne:moveTarget two:removeTarget]];   }-(voID)removeTarget:(CC3MeshNode*)targ {      [self removeChild:targ];      targ=nil; }
解决方法 如果没有太多的代码,很难说出你的问题,但如果有任何明显的话,这里有一些事情可以道歉.

你是否持有对计时器的引用?

这可能对调试很有用.如果你有一个名为makeTargetTimer的属性,那么你可以这样做:

NSTimer * makeTargetTimer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(createTargets) userInfo:nil repeats:YES];self.makeTargetTimer = makeTargetTimer // Save to a property for later use (or just use an iVar)

停止重新发生计时器的唯一方法是invalidate.因此,您可以检查它是否已失效.

BOol isInvalIDated = [self.makeTargetTimer isValID];

您也可以在dealloc方法中执行此 *** 作:

- (voID) dealloc {    [_makeTargetTimer invalIDate];  // Stops the timer from firing (Assumes ARC)}

你应该收到偶数时滚动吗?

如果您希望在滚动时触发计时器,则需要使用NSRunLoopCommonModes.在this question有一个很好的赎罪.

[[NSRunLoop currentRunLoop] addTimer:makeTargetTimer forMode:NSRunLoopCommonModes];

你对createTargets的实现是什么样的?

>您是否已将NSLog语句放在此方法的主体上.你确定它不被称为?

总结

以上是内存溢出为你收集整理的在iOS中以特定间隔调用 *** 作全部内容,希望文章能够帮你解决在iOS中以特定间隔调用 *** 作所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1054094.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-25
下一篇2022-05-25

发表评论

登录后才能评论

评论列表(0条)

    保存