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

如何在Swift中创建本地作用域?

轩辕经国
2023-03-14
问题内容

我经常在Objective-C中使用局部作用域来使命名更清晰。

{
    UILabel *label = [[UILabel alloc] init];
    [self addSubview:label];
    self.titleLabel = label;
}

我试图像这样在Swift中重写此代码:

{
    let label = UILabel()
    self.addSubview(label)
    self.titleLabel = label
}

这使我得到以下错误:

Error: Braced block of statements is an unused closure.

那么如何在Swift中创建本地作用域呢?


问题答案:

更新: 在Swift 2.0中,您只需使用do关键字:

do {
    let label = UILabel()
    self.addSubview(label)
    self.titleLabel = label
}

这对于Swift 2.0之前的版本是正确的:

您可以定义与此类似的内容:

func locally(@noescape work: () -> ()) {
    work()
}

然后使用locally如下代码:

locally {
    let g = 42
    println(g)
}

(受locallyScala的 Predef 对象启发。)



 类似资料:
  • 问题内容: 我一直在四处搜寻有关如何使用Swift 2.0为MapView制作MKCircle注释的良好解释,但我似乎找不到足够的解释。有人可以张贴一些示例代码来显示如何创建MKCircle批注吗?这是我用来制作地图并获取坐标的代码。 问题答案: 将展示有关如何使用xcode 8.3.3的swift 3在地图视图上创建圆形叠加层的分步方法 在您的主故事板文件中,将地图工具包视图拖到故事板的场景(视

  • 问题内容: 我一直在努力在Swift中创建UIAlertView,但由于某种原因,由于出现此错误,我无法正确执行该语句: 找不到接受提供的参数的’init’的重载 这是我的写法: 然后调用它,我正在使用: 截至目前,它崩溃了,我似乎无法正确理解语法。 问题答案: 从班级: //不推荐使用UIAlertView。改用 UIAlertController 和UIAlertControllerStyle

  • 我一直在Swift中创建一个UIAlertView,但由于某种原因,我无法得到正确的语句,因为我得到了以下错误: 找不到接受所提供参数的“init”的重载

  • 问题内容: 我想使用一种接受通用输入并返回通用值的方法来创建协议。 到目前为止,这是我尝试过的方法,但是会产生语法错误。 使用未声明的标识符T。 我究竟做错了什么? 问题答案: 协议略有不同。查看Apple文档中的“关联类型” 。 这就是您在示例中使用它的方式

  • 问题内容: 我想暂时暂停我的应用。换句话说,我希望我的应用执行代码,但是在某个时候暂停4秒钟,然后继续执行其余的代码。我怎样才能做到这一点? 我正在使用Swift。 问题答案: 如果要从UI线程调用该方法,则可以考虑使用或调度计时器,而不是进行睡眠(这会锁定您的程序)。 但是,如果您确实需要延迟当前线程: 这使用UNIX中的功能。