我正在使用Xcode6-beta2best365官方app下载

当前位置:best365官网app > best365官方app下载 > 我正在使用Xcode6-beta2best365官方app下载
作者: best365官网app|来源: http://www.iesfactory.com|栏目:best365官方app下载

文章关键词:best365官网app,属性闭包

  我正在使用Xcode6-beta2,但是自从第一个公开测试版以来,我遇到了同样的问题。 我的Obj-C UIViewController的Swift子类如下所示:

  (c2和c3的区别仅在于,如果它只是可获取的,best365官方app下载则不必为计算属性包括get {...}。)

  因此,best365官方app下载第一个闭包的自身似乎引用了函数/闭包类型本身,而另一个闭包的自身则引用了视图控制器(正如我所期望的那样)。c1和c2 / c3之间的唯一区别是,前者是存储的属性,后者是计算的属性,但我仍然希望闭包及其捕获的值相同,即self总是引用封闭类。 现在的情况似乎没有明显的方式让c1闭包访问封闭类的方法/属性。

  这是某个地方的文档(我读过Swift书,什么都没找到),还是只是某种形式的beta编译器错误,应该在某个地方归档?

  这看起来很有趣,所以我会更深入地探讨。 发现,您可以在闭包中访问类实例变量,例如self。然后闭包将捕获其中的(Function)。 因此,现在self引用了类实例本身。 您的关闭应该是一个懒惰的财产。

  惰性属性意味着您可以在默认闭包中引用self,因为只有在初始化完成并且已知self存在之后才能访问lazy属性。

  您缺少@lazy,因此self对闭包是未知的,best365官方app下载这就是为什么我将其打印为(Function)。

  将闭包分配给类实例变量会导致较强的引用周期。 您应该避免这种情况。 Swift为此使用了Capture列表

  如果将闭包分配给类实例的属性,并且闭包通过引用该实例或其成员来捕获该实例,则将在闭包和实例之间创建一个强大的引用周期。 Swift使用捕获列表来打破这些强大的参考周期。 有关更多信息,请参见关闭的强大参考周期。

网友评论

我的2016年度评论盘点
还没有评论,快来抢沙发吧!