美文网首页
swift学习笔记

swift学习笔记

作者: SpursGo | 来源:发表于2017-03-19 16:02 被阅读13次

    1.swift优先使用常量,要变化的话变成变量.如果使用let 声明了一个常量,那么他的内存地址是不会变化的了。如果用var声明的话,就可以更变其内存地址
    2.swift 中只有Bool类型,也就是true/false
    3.Int 相当于 Nsinteger Uint 表示的NUInteger
    4.Swift是一个强类型语言,没有所谓的id类型。没有动态决定对象类型的特性。swift中的类型推导可以根据后面的类型来推导前面的对象的类型
    5.option键可以点击查看 推导得到的类型

    Paste_Image.png

    6.swift中没有隐式转换的概念(所以必须要保证类型一致),oc中是可以做隐式转换的。

    Paste_Image.png

    必须要强制编程相同的类型

    Paste_Image.png

    7.if 语句 必须有明确的判断 没有非0/nil就是真的概念了。if 后面不需要加小括号了

    Paste_Image.png

    8.else if 用法与 oc中用法是一致的

    Paste_Image.png

    9.guard,swift中独有。

    guard 条件表达式  else  {
       //条件语句
        break
    }
    

    10.swift中的switch 后面可以不加括号 。 case后面的break也是可以省略的。

    Paste_Image.png

    swich 如果想做case穿透,也就是说如果想掉进某一个case之后,后面的代码还可以继续执行,那么就写一个关键字 fallthrough。case后面可以带多个判断条件,没一个条件后面都要加一个逗号分割。switch也是可以判断浮点数类型的,也可以判断字符串类型。switch也是支持区间进行判断的

    Paste_Image.png

    11.for循环 后面带的小括号是可以省略的 如果临时变量不需要用 也是可以省略中间变量的

    for i in 0..<10 {
    
    }
    
    for _ in 0..<10 {
    
    }
    

    12.while再swift 中 没有存在非0即真,所以后面的判断必须要有明确的bool值,后面的小括号也是可以省略的

    while a > 10 {
    
    }
    

    13.do while 循环 swift 中是没有这种的 只有repeat

    repeat {
     
    } while a < 10
    

    14.String是一个结构体 性能更高。NSString是一个对象,性能差一点。String支持直接遍历的。Swift支持String与NSString之间的无缝转换
    遍历字符串

    Paste_Image.png

    拼接字符串

    Paste_Image.png

    如果字符串与数字进行拼接的时候

    Paste_Image.png

    字符串的截取 substring....

    15.定义不可变数组

    let array  = [1,2,3,4] 
    

    定义可变数组

    var arr = [String]()
    
    Paste_Image.png Paste_Image.png

    16.字典

    //不可变字典
    let dic = ["name":"by","age":22] as [String : Any]
    let dicA : [String:Int] = ["name":22]
    
    //可变字典  
    var mutableDic = [String:Any] ();
    //添加元素
    mutableDic["name"] = "boyan"
    mutableDic["age"] = 22
    //删除元素
    mutableDic.removeValue(forKey: "name")
    //获取一个元素
    mutableDic["age"]
    //修改元素
    mutableDic["age"] = 29
    //遍历字典
    for key in mutableDic.keys {
      print(key)
    }
    
    for (key,values) in mutableDic {
        print(key)
        print(values)
    }
    //字典合并
    //即使类型一致 两个字典也是无法合并的
    
    

    17.元组, 数据是保存再小括号中的。

    let info = ("wht",1,2)
    

    元组的取值

    info.0
    
    Paste_Image.png

    18.swift中的任意属性,在创建的时候必须有明确的初始化值。所以需要使用可选类型。可以这么写

    Paste_Image.png

    但是这种写法太繁琐,就有了下面这种语法糖

    Paste_Image.png

    如果想把可选类型中的值取出来,然后可以做强制解包

    Paste_Image.png

    强制解包是一个非常危险的操作,如果强制解包的数据为空,那么变量强制解包之后就会崩溃。在强制解包之前,一定要对可选类型做判空操作。那么就会有下面的代码


    Paste_Image.png

    这样每次使用变量的时候都要强制解包一下,非常不方便。就有了可选绑定的写法。


    Paste_Image.png
    这样,以后再使用变量的时候就不用每一次都做强制解包操作了

    19.swift中的函数

    func  方法名字(方法参数) -> 方法返回值类型 {
    }
    

    swift中可以提供一个有默认值的函数。

    Paste_Image.png

    这样如果调用这个函数的时候没有给name参数传值,就会打印默认的noya值

    可变参数

    Paste_Image.png

    函数的嵌套使用

    Paste_Image.png

    20.类 如果类中的某一个方法是对于父类的重写,那么一定要协商override关键字。 swift中不建议使用self关键字。
    计算属性 是通过别的属性计算得到的属性.
    定义类属性 需要加static关键字

    21.类的构造函数。

    Paste_Image.png

    注意 必须重写父类的构造函数 关键字 override,super.init()可以不用写,编译器会帮忙写好

    as? 最终转化成的是一个可选类型
    as! 最终转化成的是一个确定的类型

    22.闭包 记住固定格式 (参数列表) -> (返回值类型)
    解决循环引用的方法

    Paste_Image.png

    对上面的方式简化写法


    Paste_Image.png

    23.dealloc 方法 在swift中是deinit方法
    24.如果闭包作为方法的最后一个参数,那么可以吧方法的最后小括号删除。这就叫尾随闭包

    相关文章

      网友评论

          本文标题:swift学习笔记

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