草庐IT

swift - 函数和闭包有什么区别?

关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭8年前。Improvethisquestion我一直在阅读iBooks中的快速编程指南。有人可以向我解释函数和闭包之间的区别是什么。难道只是没有名字,可以用在表达式中吗?

Swift:将数据传递给捕获上下文的闭包

我正在尝试在互联网连接恢复且updateOnConnection变量为真时调用一个函数。这是我的代码:funccheckForConnection(){lethost="reddit.com"varcontext=SCNetworkReachabilityContext(version:0,info:nil,retain:nil,release:nil,copyDescription:nil)letreachability=SCNetworkReachabilityCreateWithName(nil,host)!SCNetworkReachabilitySetCallback(rea

ios - 如何在 Swift 的闭包中调用 super

我想将一个func链接到superimpl,如下所示classBaseClass{funcmyFunc(){//dosomething}}classMyClass:BaseClass{overridefuncmyFunc(){self.myOtherFunc(completionHandler:{super.myFunc()//error:'super'memberscannotbereferencedinanon-classtype})}...}编译错误其实很清楚的告诉了我原因:闭包不是类类型,是不允许的。寻找任何建议如何调用父类(superclass)中定义的方法?

ios - 如何在 Swift 中设置对闭包/函数的弱引用?

在HMSegmentedControl中,我想将segmentedControl.indexChangeBlock设置为一个实例方法来处理操作。官方的例子是:https://github.com/HeshamMegid/HMSegmentedControl/blob/master/HMSegmentedControlExample/HMSegmentedControlExample/ViewController.m(第63~68行),但那是Objective-C。在Swift中,函数是一等公民。所以我想为这个block属性设置一个实例方法。但是我的代码会导致循环引用,看来我应该定义一个

dictionary - Swift - 在字典中存储闭包

是否可以在字典中存储闭包(我们如何在字典中存储ObjCblock)?示例:data=[String:AnyObject]()data!["so:c0.onSelection"]={()inDebug.log(.Debug,message:"Hello,World!")} 最佳答案 可以,但有一些限制。首先,函数类型不继承AnyObject并且不共享公共(public)基类。你可以有一个字典[String:()->Void]和[String:(String)->Int],但它们不能存储在同一个目录中词典。我还必须使用类型别名来定义字典

callback - Swift - 尾随闭包语法

我正在研究Apple的Swiftlang,在使用尾随闭包语法时遇到一些问题,例如:functest(txt:String,resolve:(name:String)->Void){resolve(name:"Dodo")}//Errorsherecomplainingonresolveparamtest("hello",(name:String){println("callback")})如何解决? 最佳答案 你的闭包语法错误test("hello",{(name:String)inprintln("callback")})或tes

xcode - 从 Xcode 的控制台打印 (po) Swift 匿名闭包参数的值

我有一个相当简单的问题,我希望有一个简单的答案。我正在使用Swift的filter方法使用匿名闭包参数$0过滤对象集合:letfilteredArray=myArray.filter{$0.name!="Bob"}我在过滤器闭包内设置了一个断点,只想检查$0的值,但是当我在控制台上键入po$0时,它会给我:(lldb)po$0error::2:1:error:anonymousclosureargumentnotcontainedinaclosure$0^我该如何解决这个问题?明确地说,代码编译并运行,但在运行时在控制台上给我这个错误。 最佳答案

swift - 闭包参数列表的上下文类型需要 1 个参数,但指定了 4 个

我升级到Xcode7并使用Alamofire管理API调用,但出现此错误:'闭包参数列表的上下文类型需要1个参数,但指定了4个'对于下面的代码:staticfuncloginWithEmail(email:String,password:String,response:(token:String?)->()){leturlString=baseURL+ResourcePath.login.descriptionletparameters=["email":email,"password":password]Alamofire.request(.POST,urlString,parame

xcode - 闭包中的 inout 参数使 Swift 编译器崩溃

我需要做的就是在Swift中开始一个新项目并添加到main.swiftstructFoo{letbar:(inoutbaz:String)->()}当我尝试构建时出现错误:命令因信号而失败:段错误:11我做错了什么吗?我认为可能不支持闭包中的inout参数,但如果我这样定义闭包:letbaz:(inoutbaz:String)->()={bazinbaz+="x"return}甚至varbaz:(inoutbaz:String)->()?编译运行正常 最佳答案 刚刚在Xcode6.3beta附带的Swift1.2中对其进行了测试,并

ios - Swift 像闭包一样使用选择器参数

我只是想知道是否可以将函数传递给按钮操作(通常是选择器)。例如,通常我会说:UIBarButtonItem(title:"Press",style:.Done,target:self,action:"functionToCall")funcfunctionToCall(){//Dosomething}但我想知道是否可以做类似的事情:UIBarButtonItem(title:"Press",style:.Done,target:self,action:{//DoSomething})我想这样做的原因是因为我的函数非常简单,而且看起来它会更整洁,更像Swift一样,因为他们强调闭包。