草庐IT

NStimer、CADisplayLink、dispatch_source_t

全部标签

ios - GCD dispatch_async 是否等待 NSLog()?

根据我对GrandCentralDispatch的了解,GCD不进行抢占式多任务处理;这是一个单一的事件循环。我无法理解此输出。我有两个队列只是在做一些输出(起初我正在读/写一些共享状态,但我能够简化到这一点并仍然得到相同的结果)。dispatch_queue_tauthQueue=dispatch_queue_create("authQueue",DISPATCH_QUEUE_SERIAL);dispatch_queue_tauthQueue2=dispatch_queue_create("authQueue",DISPATCH_QUEUE_SERIAL);dispatch_asyn

ios - dispatch_get_main_queue 和 dispatch_get_global_queue 的区别

我刚刚开始在iOS上工作,并且一直在浏览GCD上的Apple引用资料。dispatch_get_global_queue返回一个并发队列,可以向其中提交要执行的block。但是,我们也可以使用dispatch_get_main_queue实现同样的效果,对吧?那么,dispatch_get_global_queue和dispatch_get_main_queue到底有什么区别呢? 最佳答案 全局队列是一个后台队列,在非主线程上执行它的block。主队列在主线程上执行它的block。您应该将不涉及更改用户界面的后台工作放在全局队列中,

ios - 一段时间后 NSTimer 在后台停止触发

嘿,我正在开发一个应用程序,我必须在其中每30秒调用一次API,所以我为它创建了NSTimer。但是当我的应用程序进入后台时,计时器会在3-4分钟后停止触发。所以它在后台只工作3-4分钟,但之后就不行了。我怎样才能修改我的代码,使计时器不会停止。这是我的一些代码。-(IBAction)didTapStart:(id)sender{NSLog(@"heyiminthetimer..%@",[NSDatedate]);[objTimerinvalidate];objTimer=nil;UIBackgroundTaskIdentifierbgTask=UIBackgroundTaskInva

iphone - iOS:EKEventStore sources/defaultCalendarForNewEvents/calendarsForEntityType 在授权后不返回任何内容

我有一个应用程序,我正试图帮助它走出家门。这段代码最初是由另一个团队针对iOS5编写的。我添加了成功运行的requestAccessToEntityType:completion:调用。但是,在获得访问权限后,我没有得到任何来源/defaultCalendar或基于实体的日历。而且我无法创建新日历。调用defaultCalendarForNewEvents时出现此错误ErrorDomain=EKCADErrorDomainCode=1013"Theoperationcouldn'tbecompleted.(EKCADErrorDomainerror1013.)"结果为nil。如果我退出

ios - 毫无疑问,当 Controller 消失时,您是否必须使 CADisplayLink 失效()?

假设您每天都有一个CADisplayLinkclassTest:UIViewController{privatevar_ca:CADisplayLink?@IBActionfuncframes(){_ca?.invalidate()_ca=nil_ca=CADisplayLink(target:self,selector:#selector(_step))_ca?.add(to:.main,forMode:.commonModes)}@objcfunc_step(){lets=Date().timeIntervalSince1970someAnime.seconds=CGFloat(s

iOS NSTimer 不工作?

这个问题在这里已经有了答案:NSTimertimerWithTimeInterval:notworking(4个答案)关闭7年前。这是我的确切代码,它似乎不起作用。你能告诉我我做错了什么吗?请注意,refreshTimer已在私有(private)接口(interface)中声明。-(void)viewDidLoad{refreshTimer=[NSTimertimerWithTimeInterval:1target:selfselector:@selector(timerTest)userInfo:nilrepeats:YES];}-(void)timerTest{NSLog(@"T

ios - NSTimer 不会将参数传递给选择器

我创建了一个NSTimer:[NSTimerscheduledTimerWithTimeInterval:2.0target:selfselector:@selector(createObject:)userInfo:nilrepeats:YES];和createObject:定义如下:-(void)createObject:(ccTime)dt{intr=arc4random()%4;for(inti=0;i我想要实现的是将一些变量发送到方法中。我将函数重写为:-(void)createObject:(ccTime)dtcID:(int)cID{intr=arc4random()%4

ios - dispatch_async 和 peformSelectorInBackground 的区别

当我推送一个带有MapView的ViewController时,我需要绘制一条路线。这需要大约2秒,所以我想在另一个线程中进行,因为我不想阻塞UI。我用过:dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH,0)...如果我在这里画画,大约需要10-15秒。如果我使用performSelectorInBackground方法,路线将在约1或2秒后出现。为什么?PRIORITY_HIGH不应该很快吗? 最佳答案 你不应该在后台更新用户界面,真的任何

iphone - 我们可以用什么代替 nstimer?

我可以使用[locationManagerstartUpdatingLocation]在后台获取GPS位置,但我不知道如何安排它。我已经使用NSTimer进行调度,但他们中的许多人都说如果应用程序进入后台,NSTimer将过期。如果我们不使用NSTimers,我想知道如何安排调用方法。 最佳答案 Apple提供了5种在后台运行的应用程序任务:Appsthatplayaudiblecontenttotheuserwhileinthebackground,suchasamusicplayerappAppsthatkeepusersinf

iphone - 在 ios 6 中使用 EventKit 创建新日历时出现 "calendar has no source"错误

我正在ios6中使用eventkit框架开发日历应用程序。我正在尝试使用[self.storerespondsToSelector:@selector(requestAccessToEntityType:completion:)]获得许可方法并获得访问日历的权限后,我尝试使用EKSourceTypeLocal源创建带有标识符的新日历,并将事件添加到新创建的日历中。我在这里遇到的问题是,当我尝试在iPhone4s中运行该应用程序时,它显示“日历没有来源”的错误,并且它不保存我的日历,因此没有事件被添加到日历中。我不知道我在这里做错了什么。请指导我解决这个问题。我在下面发布我的代码-(vo