草庐IT

closure1

全部标签

ios - Swift Closure 编译器错误

以下代码:varindex=0;for(uuid,type)inmap!{{(idx)in/*COMPILERERRORHERE*/dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0),{Dashlet.build(self.selectedDashboard!.getUuid(),dashletUuid:uuid,type:type){(dashlet:Dashlet)inself.dashlets![idx]=dashlet;dispatch_async(dispatch_get_ma

closures - 为什么闭包中的 "unowned self"在 Swift 中不能正常工作?

Apple的Swift语言官方指南中的代码如下:classHTMLElement{letname:Stringlettext:String?@lazyvarasHTML:()->String={[unownedself]iniflettext=self.text{return"\(text)"}else{return""}}init(name:String,text:String?=nil){self.name=nameself.text=text}deinit{println("\(name)isbeingdeinitialized.")}}在闭包中使用带有unowned的捕获列表来

swift - 不明白这个 Trailing Closure

我是swift的新手。正在阅读weheartswift上的闭包。有一节讨论尾随闭包。这里有三个问题:我认为代码中存在一些拼写错误:函数不应该只是func吗?我认为{}中的3行代码只是f:(Int)->(Int)的尾随闭包,但是那3行代码中的f(i)是什么意思?当我尝试在playground中运行这段代码时,它在行中给出了这个错误:“returnsum”unexpectednon-voidreturnvalueinvoidfunction。代码:functionsum(from:Int,to:Int,f:(Int)->(Int)){varsum=0foriinfrom...to{sum+

swift - 如何处理 'Self captured by closure before being initialized'

假设我有一个结构如下:classA{classReadyHandler{//firesoffthecallbackwhenneededletcallback;init(callback:()->Void){self.callback=callback}}letreadyHandler:ReadyHandlerletready=falseinit(){readyHandler=ReadyHandler(callback:{self.ready=true})}}自然,问题是我正在尝试使用尚未初始化的self来初始化回调。如何避免循环引用和相应的错误? 最佳答案

swift 4 : Escaping closures can only capture inout parameters explicitly by value

我一直在将我的代码从Swift2迁移到Swift4。我有以下代码在Swift2中运行良好:funcfetchUserThumbnailAvatar(_task:inoutURLSessionTask?,completion:@escaping(_image:UIImage?)->()){fetchUserAvatar(Session.currentUser?.avatar?.thumbnailURLasURL???URL(string:"")!,externalUrl:URL(string:thumbnailAvatar)??URL(string:"")!,&task,completi

objective-c - Obj-C 到 Swift : Block to Closure/Delegate

保持ViewController精简并使用MVVMC帮助我更轻松地进行维护。Obj.io关于他们的site有一个很好的教程.不幸的是,该教程仅在Objective-C中。我正在尝试切换到Swift并且移动非常swift,直到我到达用于配置单元的block。在教程中,他们创建了一个blocktypedef:typedefvoid(^TableViewCellConfigureBlock)(idcell,iditem);在创建单元格时返回cellForRowAtIndexPath中的单元格。下面是一些代码,这里是整个项目:Projectvoid(^configureCell)(PhotoC

swift 泛型 : Custom closure with multiple arguments for filter function

我有一个缓存数组,可以存储不同类型的对象,如UIView、UICollectionReuableView等vararrCache=[AnyObject]()我想通过传递自定义闭包来使用内置过滤器函数过滤掉这些特定元素:privatefuncreusableViewsClosure(element:AnyObject,type:T)->Bool{returnelementisT?true:false}现在,当我在过滤器函数上调用这个闭包时,我得到一个错误说明leti=arrCache.filter(reusableViewsClosure(UIView))//错误:无法将调用结果类型bo

swift - Swift 中 Lazy var 和 var as-a-closure 的区别

我创建了一些示例项目来测试各种类型的变量实现,以测试哪些只执行一次,哪些每次调用都执行classSomething:NSObject{varclock:Int=0overridevardescription:String{letdesc=super.descriptionclock+=1return"\(desc)Clock:\(clock)"}}staticvarstaticVar:Something{print("staticVar")returnSomething()}staticvarstaticVar2:Something={print("staticVarII")retur

ios - 将文件转换为 Swift 3 : unable to infer closure type in the current context

我正在转换我的应用程序中的一些库代码,但我不知道如何将该文件从Swift2.3转换为Swift3importUIKitstructConstraint{varidentifier:String?varattribute:NSLayoutAttribute=.centerXvarsecondAttribute:NSLayoutAttribute=.notAnAttributevarconstant:CGFloat=0varmultiplier:CGFloat=1varrelation:NSLayoutRelation=.equal}funcattributes(attrs:NSLayou

Swift Closure 单语句问题

这里我有一个简单的代码片段,可以在我定义的UIView中使用简单的动画。UIView.animateWithDuration(0.1){[weakself]inself?.popOverView.center=gesture.locationInView(self?.view)}这里[weakself]是为了避免引用循环,我也使用尾随闭包来简化代码。然而,编译器对此不满意并给我错误的信息。Cannotinvoke'animateWithDuration'withanargumentlistoftype'(FloatLiteralConvertible,()->()->$T2)'$T2代