草庐IT

ios - 闭包语法中的 Swift weak Self

我有这段代码来获取JSON:Alamofire.request(.GET,worlds).responseJSON{(request,response,JSON,error)inprintln(JSON)//weakSelf.serverList=JSON}如何在这里声明weakSelf?我知道在我的情况下它应该是无主的,但我找不到正确的语法。当我尝试使用[unownedself].serverList而不是注释行时,编译器显示错误“使用未解析的标识符‘unowned’”。我也试过像这样在block之前声明常量:unownedletuSelf=self它就像一个魅力,但我想了解如何在我

swift - 将闭包作为参数传递时,ReactiveCocoa 保留循环

我在Swift中使用ReactiveCocoa如下:registerButton?.rac_signalForControlEvents(UIControlEvents.TouchUpInside).subscribeNextAs(registerButtonTapped)privatefuncregisterButtonTapped(button:UIButton){//Methodhere}这会创建一个保留周期。我知道解决方案如下:registerButton?.rac_signalForControlEvents(UIControlEvents.TouchUpInside).su

swift - 为什么 Swift 编译器不能推断出这个闭包的类型?

所以我正在编写代码来区分我的应用程序的多个版本:staticvarjsonURLNL={ifProcessInfo.processInfo.environment["CONSUMER"]!=nil{returnURL(string:"consumerURL")!}returnURL(string:"professionalURL")!}()但是我得到一个编译器错误:Unabletoinfercomplexclosurereturntype;addexplicittypetodisambiguate为什么Swift编译器不知道这将返回一个URL?我认为在这种情况下这是相当明显的。我提出这

swift - 处理 Swift 2 中异步闭包错误的最佳方法?

我正在使用大量异步网络请求(顺便说一句,iOS中的任何网络请求都需要通过异步进行)并且我正在寻找更好地处理来自不支持的Apple的dataTaskWithRequest的错误的方法>抛出。我有这样的代码:funcsendRequest(someData:MyCustomClass?,completion:(response:NSData?)->()){letrequest=NSURLRequest(URL:NSURL(string:"http://google.com")!)ifsomeData==nil{//throwmycustomerror}lettask=NSURLSessio

ios - Swift 保留循环和闭包

我已经尝试做很多关于理解保留周期的研究。我似乎无法在我的例子中找到任何东西。我确实知道,如果我将一个属性设置为闭包,则会发生一个保留周期,并且需要使用weak或unowned。但我有2个示例,我想知道它们是否正确完成:提前致谢,我试图查看它们是否已经在stackoverflow上,但找不到任何东西。简单的动画UIView.transitionWithView(self,duration:5,options:.TransitionCrossDissolve,animations:{[weakself]inself?.setNeedsDisplay()return},completion:

swift - 闭包参数中的元组成员提取

考虑这个元组数组:vartupleArray=[(String,Int)]()tupleArray.append(("bonjour",2))tupleArray.append(("Allo",1))tupleArray.sort{(t1,t2)->Boolinlet(_,n1)=t1let(_,n2)=t2returnn1我想通过做这样的事情来缩短闭包:tupleArray.sort{((_,n1),(_,n2))->Boolinn1第一:可能吗?第二:如果可能的话语法是什么?谢谢 最佳答案 好吧,你可以使用简短的闭包语法:tup

swift - 在闭包中解构元组的元组

我可以轻松地解构元组的元组:lettt=(2,(3,4))let(a,(b,c))=ttb//=>3我想在声明闭包时做同样的事情,例如我认为我可以写:[tt].map{(a,(b,c))in//Useb}Xcode提示“未命名的参数必须用空名称写入”。我让它“工作”的唯一方法是:[tt].map{(a,tuple:(b:Int,c:Int))in//Usetuple.b}这有两个我想避免的缺点:我需要使用tuple.b而不是b我需要指定b和c的类型顺便说一句,我的用例是我想用索引做一个reduce,所以我正在尝试使用array.enumerate().reduce

swift - 当不在闭包中时,传递属于 self 的函数是否会导致保留循环?

如果您需要在闭包中引用self,最好将其作为weak或unowned传递以防止保留循环。如果我直接传递属于self的函数,会不会造成retaincycle?或者它是否需要嵌套在闭包中以削弱self?直接传递UIView.animateWithDuration(0.3,delay:0.0,usingSpringWithDamping:0.7,initialSpringVelocity:0.1,options:.CurveEaseOut,animations:self.view.layoutIfNeeded,//doesthiscauseretaincycle?completion:nil

swift - 在 Swift 中传递和存储闭包/回调

我想在swift代码中执行以下操作:我必须调用我的api才能更新多个项目。所以我异步调用每个项目的api。每个api调用完成后都会执行一个回调函数。这些回调会减少一个计数器,因此当计数器达到0时,我知道我的所有api调用都已完成。当计数器达到0时,我想调用最终回调函数(一次,当所有调用完成时),以更新我的UI等等。这个最终回调在开始时传递到我的服务,并存储在类属性中供以后执行。可执行Playground源://Playground-noun:aplacewherepeoplecanplayclassMyService{letapi=MyApi()varstoredFinalCallba

Swift 闭包导致与 self 的强保留循环

我只想知道我是否理解正确。因此,根据苹果文档,当您创建一个闭包作为类实例的属性并且该闭包引用self(创建闭包属性的类)时,这将导致强保留循环,最终类和闭包都不会被释放.因此,用外行的话来说,这意味着如果我有一个具有属性的类并且该属性是一个闭包,并且一旦我在声明闭包属性的类中分配该闭包的功能,这将导致强保留循环。这是我的意思的一个简单示例classSomeViewController{letmyClosure:()->VoidpublicfuncsomeFunction(){....bunchofcodemyClosure={self.dismiss(blahBlahBlah)}}}这