草庐IT

dispatch_main_queue_callback

全部标签

Swift:在后台同步执行代码; queue.sync 没有像我预期的那样工作

我想在后台同步执行一些代码,我真的认为这是要走的路:letqueue=DispatchQueue.global(qos:.default)queue.async{print("\(Thread.isMainThread)")}但这会打印true除非我使用queue.async。async是不可能的,因为代码将被并行执行。如何实现后台同步运行多个block?我想要实现的目标:将我的应用程序中的事件与设备日历同步,这在后台发生。执行此操作的方法可以从不同的地方多次调用,所以我想在后台按顺序保持它。 最佳答案 异步执行不是您的问题,因为您

ios - Swift 2.0 中的协议(protocol)扩展方法分派(dispatch)

我遇到了有关协议(protocol)方法分派(dispatch)的问题。我有一个看起来像这样的类层次结构:protocolE{functest()}extensionE{functest(){print("jello")}}classA:E{}classB:A{functest(){print("hello")}}但是当我调用类B的实例上的test静态强制键入A时,打印的是“jello”,而不是“你好”。letb:A=B()//prints"jello"not"hello"b.test()我的理解是test打印“jello”的方法被“集成”到A的实例中(因为A符合E协议(protoco

macos - 在 Swift 中使用 Grand Central Dispatch 并行化和加速 “for"循环?

我正在努力思考如何使用GCD来并行化和加速MonteCarlo模拟。大多数/所有简单示例都是为ObjectiveC提供的,我真的需要一个简单的Swift示例,因为Swift是我的第一个“真正的”编程语言。Swift中蒙特卡洛模拟的最小工作版本应该是这样的:importFoundationimportCocoavarwinner=0varj=0vari=0varchance=0varpoints=0forj=1;j0{++winner}}println(winner)代码直接粘贴到xcode6.1中的命令行程序工程中最内层的循环无法并行化,因为变量“points”的新值将在下一个循环中使

ios - Xcode:错误域=DVTPlaygroundCommunicationErrorDomain 代码=1

我正在尝试在SwiftPlayground中测试取消DispatchWork项,尽管在执行的最初几毫秒内出现错误,我不确定它实际上表示什么,我也无法判断错误是否导致取消,而不是cancel()方法...functestDispatchWorkItems(){letqueue=DispatchQueue.global(qos:.userInitiated)varitem:DispatchWorkItem?//createworkitemitem=DispatchWorkItem{foriin0...100000{ifitem!.isCancelled{break}print(i)}}//

swift - 是否有一个 main.swift 相当于 @NSApplicationMain 注释?

在XCode中创建一个新的Cocoa项目会给我一个AppDelegate.swift文件,如下所示:importCocoa@NSApplicationMainclassAppDelegate:NSObject,NSApplicationDelegate{@IBOutletweakvarwindow:NSWindow!}The@NSApplicationMainattributeisdocumentedhere作为NSApplicationMainApplythisattributetoaclasstoindicatethatitistheapplicationdelegate.Usin

swift - Swift 是否对方法使用消息分派(dispatch)?

我确定我的术语不对,所以这里有一个例子:C/C++有方法和虚方法。两者都有机会在编译时内联。C#的CIL有call和callvirt指令(非常类似于C++方法和虚拟方法)。虽然C#中的几乎所有方法调用都变成了callvirt(由于语言困惑),但JIT编译器能够优化大部分回call指令,然后(如果值得的话)也将它们内联.Objective-C方法调用的方式非常不同(而且效率低下);每次调用方法时,都会通过objc_msgsend传递消息对象,这是一种动态调度形式,永远不能内联。阅读语言specificationforfunctions对于Swift,我不知道Swift使用的是与Objec

swift - EXC_BAD_INSTRUCTION 在 ios 7(swift) 上使用 dispatch_get_global_queue 时发生

letdownloadGroup=dispatch_group_create()varimages=[UIImage]()varerrors=[NSError]()dispatch_apply(UInt(urls.count),dispatch_get_global_queue(QOS_CLASS_USER_INITIATED,0)){(i)indispatch_group_enter(downloadGroup)SimpleCache.sharedInstance.getImage(urls[Int(i)],completion:{(image,error)->()inifletfu

objective-c - 什么是 dispatch_group_create 的 Swift 等价物

如何等待多个方法完成?这是objective-c的解决方案:self.dispatch_group=dispatch_group_create();dispatch_group_notify(self.dispatch_group,dispatch_get_main_queue(),^{});dispatch_group_leave(strongSelf.dispatch_group); 最佳答案 在Swift3中...letdispatchGroup=DispatchGroup()dispatchGroup.enter()disp

java 101,我如何计算传递给 main 的参数数量?

例如publicstaticvoidmain(String[]args){intcount=0;for(Strings:args){System.out.println(s);count++;}}有没有办法做类似的事情intcount=args.length()?或args.size()? 最佳答案 它会是:intcount=args.length; 关于java101,我如何计算传递给main的参数数量?,我们在StackOverflow上找到一个类似的问题:

java - 线程 "main"java.security.InvalidKeyException : Illegal key size or default parameters 中的异常

这个问题在这里已经有了答案:InvalidKeyExceptionIllegalkeysize(6个答案)关闭4年前。下面的代码抛出了这个错误信息:线程“main”java.security.InvalidKeyException中的异常:非法key大小或默认参数Cipherdcipher;byte[]salt=newString("12345678").getBytes();intiterationCount=1024;intkeyStrength=256;SecretKeykey;byte[]iv;Decrypter(StringpassPhrase)throwsException