大佬教程收集整理的这篇文章主要介绍了在iOS中以特定间隔调用操作,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
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中以特定间隔调用操作所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。