当前位置: 首页 > 面试题库 >

嵌套闭包不喜欢参数列表

顾磊
2023-03-14
问题内容

UIView需要根据自定义控件的完成处理程序更改警告标签:

    voucherInputView.completionHandler = {[weak self] (success: Bool) -> Void in

        self?.proceedButton.enabled = success
        self?.warningLabel.alpha = 1.0

        if success
        {
            self?.warningLabel.text = "Code you entered is correct"
            self?.warningLabel.backgroundColor = UIColor.greenColor()
        }
        else
        {
            self?.warningLabel.text = "Code you entered is incorrect"
            self?.warningLabel.backgroundColor = UIColor.orangeColor()
        }


        UIView.animateWithDuration(NSTimeInterval(1.0), animations:{ ()-> Void in
            self?.warningLabel.alpha = 1.0
        })

最后的动画块显示表格中的错误。

Cannot invoke 'animateWithDuration' with an argument list of type '(NSTimeInterval), animations: ()-> Void)'

如果我在完成闭包之外的某个地方调用它,那么它将起作用。


问题答案:

问题是闭包隐式返回此表达式的结果:

self?.warningLabel.alpha = 1.0

但闭包本身被声明为returning Void

添加一个显式return应该可以解决此问题:

UIView.animateWithDuration(NSTimeInterval(1.0), animations: { ()-> Void in
    self?.warningLabel.alpha = 1.0
    return
})


 类似资料:
  • 我正在尝试使用然而,不管我使用的闭包返回参数是什么,我似乎都会遇到异常。 无法使用类型为“”的参数列表调用“animateWithDuration”(NSTimeInterval,延迟:NSTimeInterval,选项:UIViewAnimationOptions,animations:()- 这就是冒犯功能 老实说,我一定尝试过闭包返回参数的所有可能组合(有选项和没有选项),但没有运气。例如:

  • 问题内容: 是否可以在一个查询中将多个SQL LIKE通配符串在一起-像这样? 目的是查找同时包含通配符但没有特定顺序的记录。 问题答案: 正确的SQL语法是:

  • 我在PostgresQL中有一个表feed_item_likes_dislikes(feed_item_id,user_id,vote),其中 feed_item_id是uuid 用户id为整数 投票=正确那么这是一个类似 投票=FALSE那么这是一种厌恶 vote=NULL表示用户最初喜欢或不喜欢,但通过取消通知返回并删除了投票 我还有另一个表feed_item_likes_dislikes_a

  • 喜欢资讯 取消喜欢资讯 资讯喜欢列表 喜欢资讯 POST /news/{news}/likes Response Headers Status: 201 Created 取消喜欢资讯 DELETE /news/{news}/likes Response Headers Status: 204 No Content 资讯喜欢列表 GET /news/{news}/likes Respons

  • 点喜欢 取消喜欢 喜欢的人列表 点喜欢 POST /feeds/:feed/like Response Status: 201 Created { "message": [ "操作成功" ] } 通知类型 { "channel": "feed:digg", // 通知关键字 "target": 325, // 动态id "content": "@2222 点喜欢了

  • 问题内容: 我已经在Python中看到并使用了嵌套函数,它们与闭包的定义匹配。那么为什么叫他们而不是? 嵌套函数不是因为外部世界不使用闭包吗? 更新:我正在阅读有关闭包的知识,这让我开始思考关于Python的这个概念。我搜索并找到某人在下面的评论中提到的文章,但是我无法完全理解该文章中的解释,所以这就是为什么我问这个问题。 问题答案: 当函数可以从完成其执行的封闭范围访问局部变量时,就会发生关闭。