博客> swift的一些注意点
swift的一些注意点
2017-12-12 18:10 评论:0 阅读:492 诸葛亮倒骑小毛驴
IOS中swift初始的了解

一.

/* Swift中,不需要分号,在其他语言中 ;标示一句指令的结束 如果多个语句并列,可以使用分号

1. OC中 alloc/init 对应在 () ,构造函数 ,创建并且初始化
2. OC中,alloc/initWithXXX ,Swfit中(XXX:)
3. OC中,[UIColor redColro]类函数,在Swift中直接用 .
4. Swift中,可以省略self,个人建议不加,在闭包中加

*/

注意: // let -- 定义常量 --一旦设置数据就不允许修改 // var -- 定义变量 --可以修改 // 尽量开始使用 let,必要是时候使用 var

    // 自动推导 -- 会根据设置数值的右侧代码,推断变量或者常量的类型
    // 在Swift中 任何时候,都不会做隐式转换
    // 任何2个类型不同的变量或者常量都不允许直接计算! Swift是个异常严格的语言

可选项: //可选项: -- 一个变量,可以为本身的类型,也可以为 nil

    // 定义变量/常量如果需要制定类型, :类型 的方式来制定

    //**** 可选项不能直接计算
    // ! -- 强行解包 程序员程序 y 肯定有值,如果没有就会崩溃
    //unexpectedly found nil while unwrapping an Optional value
    // 每次写 ! 的时候,程序员都要思考 是否有值

/ 可选项是非常头疼的事情 1.明确可选项的概念 2.借助Xcode的智能提示,帮助修改 3.每次修改都要思考,为什么 /

switch的学习: /*

  1. swift的switch不仅仅局限于 整形,其他的类型也可以
  2. case 后边有执行语句的话,可以省略 break
  3. default:在你判断出所有的情况下,是可以省略的
  4. 可以运用枚举,把所有的情况都考虑到 */

循环:

// swift版本的for循环 for i in 0...10 { print(i) // 11个 }

    // in 主要是起到一个 分隔的作用

    for i in 0..<10 xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed> 返回值 {
        // 代码实现
    }
2. 函数返回值为空的三种表现形式 -- 知道就好

// MARK:-- 第一种返回值为空的表现形式 什么都不加 func demo() {

}

// MARK:-- 第二种 返回一个  Void
func demo2() -> Void {

}

//MARK:-- 第三种 返回一个 ()
func demo3() -> (){

}

3. 外部参数的概念 -- 对我们的参数进行一个说明,不参与任何计算

*/

闭包: *如何认识OC里的 块

1. 代码块
2. 需要让他执行的时候,才执行;不需要的时候,不执行
3. 一般会作为回调进行一个反向传值

*/

/* 闭包

  1. 代码块
  2. 需要让他执行的时候,才执行;不需要的时候,不执行
  3. 一般会作为回调进行一个反向传值 -- 可以把闭包作为一个参数,进行回调

    闭包的语法格式: 闭包 = { (参数) -> (返回类型) in // in 用于分割代码 // 要执行的代码 }

    刚接触他的时候,虽然有一点怪,但是大家可以先接受一下,然后按照计算机的思维来理解一下 闭包他存在的一个意义: 可以理解成就是回调 */

注意点:

swift是支持中文书写的:

(重要)闭包:

weak和unowned的区别:

if let 和 if var 的区分:(重要)

guard let的使用:(重要)

guard 和 if 的命名:

闭包:(注意点)

强行解包与可选解包的区分:

swift中的weak的使用:

注意: 闭包就是代理block 的作用!!

swift中不用考虑导入头文件的问题,因为 有命名空间的概念

查看控制器是否销毁:

// OC里的的dealloc 在swift中是 deinit
// deinit 没有func

闭包强引用问题的总结: // 闭包可以带参数进行回调 -- 变成有参数的闭包 // 闭包对 self 有一个强引用,但是并不是所有的强引用都会引起循环引用!!!

解决循环引用的办法:

1.控制器不强引用另一个控件

// 闭包弱化self 有一下三种方法

2.使用 weak var (一般用这个)

  1. [weak self] 用法 // 第二种方法 -- [weak self] /* let closure = { [weak self] (json: String) -> () in print("刷新一个UI") print(json) print(self)

3.使用 [unowned self] (存在野指针现象)

比较:

    /*
        weak 相当于 OC里的weak
            iOS 5.0之后推出了 weak.当我们创建的对象销毁了之后,指向的指针会指向nil
            比较安全

        unowned 相对于 OC里的 assign

            iOS 4.0之后推出的 当我们的对象销毁了之后,原理的指针还指向原来的地址.当再次去访问的时候,会出现野指针
            bad_access
收藏
2
sina weixin mail 回到顶部