草庐IT

wn-block

全部标签

swift - 在 swift 中将函数用作 block 时避免保留循环

以下是您可以在playground中运行的代码示例importFoundationclassTempNotifier{varonChange:(Int)->Void={tin}varcurrentTemp=72init(){//1.onChange={[unownedself]tempinself.currentTemp=temp}//2.onChange={[unownedself]tempinself.tempHandler(temp)}//3.unownedlets=selfonChange=s.tempHandler}deinit{println("deinit")}priva

ios - 取消完成 block

快速提问。通常,我们进行网络调用并在获得响应时,我们在完成block中返回数据,如下所示funcsomeAPIcall(input:input,completion:(result:data)->Void){...completion(data)}我使用下面的函数someAPIcall(input){(result:data)inprint(result)//UpdateUI,etc}是否有可能在以后的任何时间点以某种方式取消完成block?比如说,如果我立即进行网络调用和popViewController,尽管如果我取消request,但如果数据返回到完成block,则会执行完成任务

ios - 如何模态呈现 ViewController,然后在 ViewController 被关闭后运行回调函数/ block ,没有委托(delegate)?

我只是知道self.presentViewController(childVc,animated:true,completion:{})中的完成block在subviewController完成动画后被调用显示在屏幕上。实际上,我想运行一段代码,在subviewController的动画完成后显示关闭。我该怎么做,最好避免使用委托(delegate)来做到这一点?编辑:我从呈现的(子)ViewController中这样调用它:self.presentingViewController.dismissViewControllerAnimated(true){},但问题是subviewCo

swift - 在 Swift 3 中将数据拆分为 block

我需要通过网络以5MB的block发送从照片库读取的图像。我使用以下方法从库中读取图像:PHImageManager.requestImageData(for:options:resultHandler:)并获得一个Data对象。然后我想有效地将​​数据分成block(不复制内存)。最好的方法是什么?这是我目前所拥有的:imageData.withUnsafeBytes{(unsafePointer:UnsafePointer)->VoidinlettotalSize=data.endIndexvaroffset=0whileoffsettotalSize?totalSize-offs

swift - 为什么要在依赖 self 的 block 中指定 [unowned self]?

我希望self不为nil,并且我确信它会在block执行期间。那么为什么要明确指定[unownedself]呢?object.executeBlock{date=self.lastModified}对比object.executeBlock{[unownedself]indate=self.lastModified}编辑:好吧,我的票数越来越低,所以让我们再试一次。问:假设我有问题。那个问题是我想阻止引用循环。我有两个选择。我可以使用[unownedself]或者我可以使用[weakself]。因此,我的问题是:从这两个选项中,我为什么要选择[unownedself]?为什么不每次都选

swift - Swift 中 block 参数文档的标记格式是什么?

如果您为文档添加标记,Swift中的block参数会显示一个block参数表,但我不知道如何填写此表。我已经在Xcodemarkupreferenceformatting中搜索过了但我在上面找不到任何东西。示例:/**Foo-parametercompletion:Ablocktoexecute*/funcfoo(completion:(Bool)->Void){//dosomething}如果我在Xcode中对上面的函数option+click来查看文档,会显示以下内容:Apple的API显示已填写的完成block参数表。这是CloudKitAPI文档View的示例:

ios - 完成 block Swift 后设置标签文本

我想将用户名设置为标签,因为我的block("findObjectsInBackgroundWithBlock")需要时间才能完成并且label.text设置了nil。完成区block后如何设置标签文字??classtest{varuserName:String?//variabletoaccessusernamereturnedbyblockprivatefuncloadData(){getCurrentUser()lblUserName.text=userName}}这是我从Parse获取用户数据的block。privatefuncgetCurrentUser(){ifPFUser

ios - 等待一个 block 加载,然后再加载更多

我正在构建一个应用程序,我需要在其中分block加载数据,我的意思是先加载5个项目,然后继续加载另外5个,但我不知道该怎么做。目前我整理了我的项目列表,所以我得到了一个列表列表,每个列表有5个项目。现在,for循环刚刚触发请求,但我想等待响应,然后在for循环中继续。我使用alamofire,我的代码如下所示。privatefuncrequestItemsForField(items:[Item],completion:@escaping(_measurements:Array?,_success:Bool)->()){letuserPackageId=UserManager.inst

ios - __copy_helper_block_ 在 AVFoundation 中崩溃

我的视频处理应用程序发生奇怪的崩溃。它使用AVFoundation处理视频和音频,使用GPUImage进行过滤。我自己从未遇到过这个问题,但在将其发布到AppStore后,它经常出现在Crashlytics中。这是崩溃的日志:Thread:Crashed:AVPlayerItemOutputqueue0libobjc.A.dylib0x00000001986f80b4objc_retain+201libsystem_blocks.dylib0x0000000198d79bf8_Block_object_assign+3202AVFoundation0x0000000186895a34_

ios - swift 中的 dispatch_block_t 相当于什么?

我有一些我想理解的objective-c代码,以便在swift中执行相同的操作:dispatch_block_tadjustTooltipVisibility=^{self.tooltipView.alpha=_tooltipVisible?1.0:0.0;self.tooltipTipView.alpha=_tooltipVisible?1.0:0.0;};到目前为止,关于dispatch_block_t我能找到的所有信息是它在swift的dispatch_after中用作闭包。所以我能理解,但我不明白它在objective-c中的用法,以及如何将这段代码转换为swift代码