• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ios > a型血和b型血生的孩子Swift懒加载和计算型属性的一点疑惑

a型血和b型血生的孩子Swift懒加载和计算型属性的一点疑惑

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-05

佚名通过本文主要向大家介绍了a型血和b型血生的孩子Swift懒加载和计算型属性的一点疑惑等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:a型血和b型血生的孩子 Swift懒加载和计算型属性的一点疑惑
描述:

首先有三个代码段

var str:String{
    return "str"
}

var str:String = {
    return "str"
}()

lazy var str:String={
    return "str"
}()

比较明确的是第一个是计算型属性 第三个是懒加载,那么第二个是什么,我在测试的时候发现第二个也具有懒加载的性质 比如

var i = 0
class A{
     var a:Int={
        i+=1
        return i
    }()
    func out(){
        print(a)
    }
}
let t = A()
t.out()
t.out()

输出的就是1 1
我是在写代理的时候发现的问题

var tf:UITextField={
  let tf = UITextField()
    tf.delegate = self//发生错误,加lazy解决
}()

第二个是什么语法, 代理出错又是为什么


解决方案1:

不加lazy并不具有懒加载的性质,可以用代码验证:

var i : Int = 0
var j : Int = 0

class A {
    var b : Int = {
        i += 1
        print("b computed")
        return i
    }()
    lazy var c : Int = {
        j += 1
        print("c computed")
        return j
    }()
}

let a = A() // 此时已经输出 "b computed"

补充1:

{} 在Swift中是闭包,或者说 匿名函数。

{}() 就是就相当于函数调用,立即执行的匿名函数。{}() 类似于把 {} 中的内容单独定义成一个函数fn,再调用 fn()。

补充2:

立即执行函数可以当 block 用


var i = 0
var j = 0
var I = 1
var J = 2

// instant run
_ = {

  var i = 2
  let j = 3
  print("global variables \(I), \(J)") // 输出 1, 2
  print("local  variables \(i), \(j)") // 输出 2, 3
}()


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 2017-06-05 IOSswiftUICollectionView中cell的间距如何设置,请大神讲解。
  • 2017-06-05 张馨予露全乳删除删除怎么删除提交到cocoapods上的框架?
  • 2017-08-23iOS之《Effective Objective-C 2.0》读书笔记(14)
  • 2017-06-05 timeoutIntervalForRequesttimeoutIntervalForResource有什么区别
  • 2017-06-05 tableView设置行的时候程序直接报错了
  • 2017-06-05 移动mm客户端下载移动端为什么产生“一像素边框”这个问题?
  • 2017-06-05 在刷新tableView的时候遇section加载个数的问题,求大神解答。
  • 2017-06-05 自定义了一个导航控制器当父类用,然后视图控制器上定义当barbuttonitem就看不见了。
  • 2017-06-05 iOS开发,UI设计师给的750的设计图,如何适配各种尺寸的屏幕?
  • 2017-06-05 category重写系统方法的调用顺序是怎么样的?

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • iOS编译失败ld:symbolsnotfoundforarchitecturex86_64错误
    • 在没有afn等第三方库之前,人们是怎么写网络链接的代码的?
    • ios蓝牙开发出现有的手机连接不上的问题
    • iOS如何判断一个点在一个使用CAShapeLayer绘制出的圆弧内
    • 天增岁月人增寿CocoaPods101版本增加的新写法?
    • cocoapodscocoapods的问题
    • 为什么block里面使用self,instrumentsleaks没有检测出内存泄漏?需要用什么方法才能检测出
    • 关于UIButton使用setAttributedTitle:forState:之后无法改变标题颜色
    • 黑屏屏保ios横屏偶尔一半黑屏的bug是可以解决的吗
    • UIAlertController的Action事件反应有点慢?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有