草庐IT

NStimer、CADisplayLink、dispatch_source_t

全部标签

ios - dispatch_after 和 [UIView 动画 : duration] happen immediately (but shouldn't)

在iOS7中,我们遇到了间歇性错误。iOS6没有发生这种情况。它不会立即开始,但进入游戏约30秒到约2分钟后,所有动画和dispatch_after命令都会立即发生。更具体地说,动画正在发生,就好像“持续时间:”值是0,即使它绝对不是0。更具体地说,dispatch_after就像wait=0一样发生。一旦启动,它就会一直存在,直到软件终止。我不知道如何调试它,或者它是否是iOS7错误。任何想法/帮助将不胜感激! 最佳答案 问题是您认为您的完成block被过早调用了吗?如果是这样,您是否检查过传递到完成block中的bool值的值?

ios - 当我不创建 NSTimer 对象时如何使计时器无效

我不想创建NSTimer对象。如何使计时器无效?我想使viewWillDisappear中的计时器无效。-(void)viewDidLoad{[superviewDidLoad];[NSTimerscheduledTimerWithTimeInterval:10target:selfselector:@selector(onTimer:)userInfo:nilrepeats:YES];} 最佳答案 一个你必须坚持你创建的计时器:@interfaceMONObject()@property(nonatomic,retain)NSTi

ios - dispatch_queue_t 中的 "t"代表什么?

我似乎无法从Apple的GCD文档中找出dispatch_queue_t中的“t”代表什么。起初我以为是“线程”,但看了之后thisquestion我认为这意味着typedef。如果是这样,那么dispatch_queue_t的typedef是什么? 最佳答案 它代表“类型”。如果文档没有指定dispatch_queue_t是什么typedef,那么它就是一个不透明的类型:你不应该知道,因为它是一个实现细节(不是部分API规范)。 关于ios-dispatch_queue_t中的"t"代

objective-c - Objective-C 和 iOS : running a timer? NSTimer/线程/NSDate/等

我正在开发我的第一个iOS应用程序,遇到了第一个问题,我一直找不到好的答案。问题:我有一个自定义的UIGestureRecognizer并正确连接了它,我可以在识别后为@selector中的每个触摸运行代码。这对大多数事情来说都很好,但对其他人来说有点太多了。我的目标:制作一个定时器,在指定的时间间隔触发以运行逻辑,并能够在触摸被取消时取消它。为什么我在这里问:解决方案有很多可能性,但没有一个是最适合实现的。目前看来performSelector(以及一些变体)NSThreadNSTimerNSDate操作队列我想我也找到了其他一些......从所有研究来看,某种形式的制作线程似乎是可

ios - 无形的执行顺序(dispatch_semaphore_t、dispatch_group_async)以及它们与不同调度队列类型的结合使用

我只是在晚上花了一些时间来研究GCD,尤其是dispatch_semaphore_t,因为我从未使用过它。从来不需要。所以我写了下面的作为测试:-(void)viewDidLoad{UIView*firstView=[[UIViewalloc]initWithFrame:(CGRect){{0,0},self.view.frame.size.width/4,self.view.frame.size.width/5}];firstView.backgroundColor=[UIColorpurpleColor];[self.viewaddSubview:firstView];dispat

iphone - 如何知道何时使 `NSTimer` 无效

这是我的问题:我有一个模型类,其中有一个NSTimer,我希望Timer在模型对象的整个生命周期内运行。初始化很简单:我只需在init方法中添加以下代码行:self.maintainConnectionTimer=[NSTimerscheduledTimerWithTimeInterval:1target:selfselector:@selector(maintainConnection)userInfo:nilrepeats:YES];但是,我的问题是,当模型从内存中释放时,我如何使这个计时器失效?现在,这通常很容易,但是,据我所知,当您安排一个NSTimer操作系统维护一个指向Ti

ios - CADisplayLink 在 iOS5.1 上运行较低的帧率

我在我的iPhone应用程序中使用CADisplayLink。相关代码如下:SMPTELink=[CADisplayLinkdisplayLinkWithTarget:selfselector:@selector(onTick)];SMPTELink.frameInterval=2;//30fps60/n=fps[SMPTELinkaddToRunLoop:[NSRunLoopmainRunLoop]forMode:NSDefaultRunLoopMode];onTick因此在30FPS(1/30秒)的每一帧被调用。这在iOS6+上非常有效-完全符合我的需要。然而,当我在运行iOS5.

ios - dispatch_queue_set_specific 与获取当前队列

我试图弄清楚这两者之间的区别和用法:staticvoid*myFirstQueue="firstThread";dispatch_queue_tfirstQueue=dispatch_queue_create("com.year.new.happy",DISPATCH_QUEUE_CONCURRENT);dispatch_queue_set_specific(firstQueue,myFirstQueue,(void*)myFirstQueue,NULL);问题#1这有什么区别:dispatch_sync(firstQueue,^{if(dispatch_get_specific(my

ios - 通过示例了解何时使用 dispatch_get_main_queue 和 requiresMainQueueSetup

前一段时间我在这里问过类似的问题:DifferencerequiresMainQueueSetupanddispatch_get_main_queue?我今天回过头来发现我还没有完全掌握它。当我们为iOS编写ReactNative模块时,iOS端有dispatch_get_main_queue并且react-native需要requiresMainQueueSetup。对于以下包和用例,应该如何使用其中的哪一个?asq-react-native-device-导出包ID等常量的包asq-react-native-sensors-允许从设备陀螺仪和其他传感器订阅和接收数据的包asq-re

objective-c - 具有回调方法的 IOS Grand Central Dispatch

我没有在我的应用程序中使用GCD或太多线程,但我遇到过需要在另一个线程上运行一两个方法的情况。此方法完成后,我需要使用回调中的主线程调用另一个方法。我一直在四处寻找如何检测线程何时完成操作但仍然不太清楚这个问题。我创建了一个测试应用程序,并使用了viewDidLoad方法作为一个快速示例。-(void)viewDidLoad{[superviewDidLoad];//Doanyadditionalsetupafterloadingtheview,typicallyfromanib.dispatch_async(dispatch_get_global_queue(DISPATCH_QUE