草庐IT

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 - "Extra argument ' 通过 Swift 闭包时完成 ' in call"

我已经扩展了UIView上的动画功能,添加了一些缩放的快捷功能,如下所示。extensionUIView{classfuncanimatePressed(viewToAnimate:UIView,complete:((Bool)->Void)){UIView.animateWithDuration(0.20,delay:0,options:UIViewAnimationOptions.allZeros,animations:{viewToAnimate.transform=CGAffineTransformScale(viewToAnimate.transform,scale,scal

swift - 没有尾随闭包支持具有默认参数值的方法?

您可以将下面的代码放到playgrounds中。importUIKitclassMyClass{funcfoo(a:String,b:()->()){b()}funcbar(a:String="a",b:()->()){b()}}letobject=MyClass()object.foo("x"){()->()inprintln("foo")}object.bar(){()->()inprintln("foo")}object.bar()调用产生Missingargumentforparameter'b'incall问题是:我是不是做错了什么,或者在具有默认参数值的方法中不支持尾随闭包

Swift:无法在某些闭包中分解元组(例如,使用枚举减少)?

当使用map()和enumerate()时,Swift将分解枚举元组:map(enumerate([1,2,3])){(index,element)inindex+element}但是,这似乎无法与额外的闭包参数一起使用(例如,使用reduce()):reduce(enumerate([1,2,3]),0){(accum,(index,element))inaccum+index+element}此操作失败并显示错误:使用未声明的类型“索引”。我是否遗漏了一些简单的东西,或者Swift根本不允许分解一个元组和一个附加参数?我在1.1和1.2中尝试过这个。(现在,我使用速记参数名称。)

ios - 将 swift 闭包存储为 objective-c 类的属性,其中使用 typedef 声明 block

天哪,我这辈子都做不到。我在objective-c中有一个typdef,如下所示:typedefvoid(^StringBlock)(NSString*string);我有一个objective-c类,它有一个允许您存储自己的StringBlock类型block的属性。该属性在objective-c中声明如下:@property(nonatomic,copy)StringBlockonTextSubmitBlock;在objective-c中为其分配block如下所示:input.onTextSubmitBlock=^(NSString*text){};我想在Swift类中做同样的事情

ios - For Loop Swift 中的闭包完成

我有一组对象都需要验证。验证需要使用闭包。我知道闭包可以随时完成,因此for循环将在所有闭包之前完成。所以在for循环之后放类似reloadData的东西是行不通的。那么,对于每个经过循环的对象,了解所有闭包代码何时完成的好方法是什么?我可以在闭包中调用reloadData并一次更新一个数据-但宁愿在它们全部完成后才这样做。我的代码foraClientinpassedPossible{letgeocoder=CLGeocoder()geocoder.geocodeAddressString(aClient[address],completionHandler:{(placemarks,

ios - 在 VC 上显示 AlertView。当自定义类在闭包中捕获错误时

我想问一下关于新的UIAlertController的问题。如何检测自定义类中的错误以向用户显示警报View?我想在switchcase变为默认语句时执行我的警报View。我的NetworkOperation类是带有闭包的自定义类,用于从Web下载一些JSON数据。classNetworkOperation{lazyvarconfig:NSURLSessionConfiguration=NSURLSessionConfiguration.defaultSessionConfiguration()lazyvarsession:NSURLSession=NSURLSession(confi

swift - swift 构造函数中令人困惑的闭包用法

我正在查看promisekit的源代码,因为我想扩展它,但我对这个初始化程序感到困惑publicinit(@noescaperesolvers:(fulfill:(T)->Void,reject:(ErrorType)->Void)throws->Void){}特别是resolvers:(fulfill:(T)->Void,reject:(ErrorType)->Void)它似乎是构造函数中的两个参数,由每个闭包签名之间的逗号表示,除了有一个名为resolvers的参数标签并且括号跨越两个闭包...这是什么?在我的特定用例中,我想在子类中扩展这个初始化器,我的客户初始化器添加第三个闭包

swift - 在这个特定的闭包语句中,= 符号的作用是什么?

我是Swift的新手,正在尝试学习闭包的概念。我在网上看到这段代码:varsayHelloClosure:()->()={print("hellofromclosure")}当我删除=号时,编译器输出错误信息:Missingreturninafunctionexpectedtoreturn'()->()'谁能告诉我=在这个特定上下文中的用法? 最佳答案 让我们分解一下这个语句:varsayHelloClosure好的,我们正在创建一个可变变量:()->()它有一个()->()类型,一个没有参数返回void的函数。=它被设置为某物{p

swift - 从闭包中返回一个 bool 值

我一直在Swift文档和谷歌搜索中搜索,但找不到如何从这样的block中返回值:funccheckIfplayerFellDown()->Bool{self.enumerateChildNodesWithName("brick",usingBlock:{(node:SKNode!,stop:UnsafeMutablePointer)->Boolinif(node.position.y问题是因为我不理解block。我通常这样使用它们:world.enumerateChildNodesWithName("name"){node,stopinif(node.position.y如何从这些闭包