美文网首页
swift笔记

swift笔记

作者: OwenKing | 来源:发表于2019-10-28 17:56 被阅读0次

    一.swift没有oc那个[nsstring stringwithformart...]的方法,然后现在想要拼接变量的时候就要用\()来表示了

    二.将一个函数作为返回值,可以代替oc中的block或者代理

    三.函数也可以把另外一个函数作为其自身的参数。

    四.字典创建方式:string表示前面的key,必须是字符串类型。后面跟any类型的数据

    五.swift函数同样可以接受多个参数

    六.Swift lazy 修饰 和 lazy方法(延迟加载)

         延迟加载主要有以下两个使用的场景:

              1.属性的初始值依赖于其他的属性值,只有其他的属性值有值之后才能得出该属性的值。

              2.属性的初始值需要大量的计算。

        Objective-C中的延迟加载

        Objective-C并没有在语法上支持延迟加载,通常是由程序员自己手动实现的。

    在初始化对象后,_names 是 nil。只有当首次访问 names 属性时 getter 方法会被调用,并检查如果还没有初始化的话,就进行赋值。可以想见,控制台打印的“只在首次访问输出”的确只会输出一次。我们之后再多次访问这个属性的话,因为 _names已经有值,因此将直接返回。

      Swift中则可以通过lazy关键字简单地实现相同功能,延时加载或者说延时初始化是很常用的优化方法,在构建和生成新的对象的时候,内存分配会在运行时耗费不少时间,如果有一些对象的属性和内容非常复杂的话,这个时间更是不可忽略。另外,有些情况下我们并不会立即用到一个对象的所有属性,而默认情况下初始化时,那些在特定环境下不被使用的存储属性,也一样要被初始化和赋值,也是一种浪费。

    延迟加载创建数组names

    七.swift中private的使用

          在swift 3.0的时候,如果把声明的变量或方法加上private前缀,那么它就只能在当前的class里使用,extension 中也不能使用。改成fileprivate,却又可以在其他类中实例化后使用,属性的作用域就会更大,可能会不小心造成属性的滥用。

          所以在Swift 4 中,private 的属性的作用域扩大到了 extension 中,并且被限定在了 struct 和 extension 内部,这样就不需要再改成 fileprivate 了。

    lazy和private修饰进度条

    八.属性声明

           在声明全局属性的时候我们常用到 类名+() 的方式进行初始化,如上下两图,我们还可以通过方法块来进行初始化

    九.deinit析构函数(oc中的dealloc)

            当对象结束其生命周期时(例如对象所在的函数已调用完毕),系统自动执行析构函数。一般可以用来:销毁对象、KVO移除、移除通知、NSTimer销毁等。

    十.swift条件判断

            因为swift字典中可以存放任何类型的数据,所以在进行条件判断的时候,要确保参数的类型,并且可以直接写在判断的条件中

    十一.属性监视器和属性dynamic

     因为swift默认是静态分发来提高性能,并且不再是所有类都继承于NSObject。和oc基于runtime的动态分发机制不同,所以swift要继承于NSObject然后使用dynamic来修饰属性开启动态分发机制,不过swift自己也新加了willSet和didSet两个方法来弥补这个不足

    使用dynamic修饰后会开启属性的动态分发机制就可以使用kvo,和oc的使用步骤一样

    第一步:注册 openfuncaddObserver(_observer:NSObject,forKeyPath keyPath:String,options:NSKeyValueObservingOptions=[],context:UnsafeMutableRawPointer?)

    第二步:监听overridefuncobserveValue(forKeyPath keyPath:String?,of object:Any?,change:[NSKeyValueChangeKey:Any]?,context:UnsafeMutableRawPointer?)

    第三步:移除 openfuncremoveObserver(_observer:NSObject,forKeyPath keyPath:String)

    相关文章

      网友评论

          本文标题:swift笔记

          本文链接:https://www.haomeiwen.com/subject/ztobvctx.html