美文网首页Swift初体验
Advanced Swift - Some Tips(1) 引言

Advanced Swift - Some Tips(1) 引言

作者: Raaaaamsey | 来源:发表于2016-10-28 11:29 被阅读6次

1. 值类型与引用类型

  • 结构体和枚举类型是值类型,类是引用类型。
  • 引用类型具有同一性,可以使用“===”来检查两个变量是否确实引用了同一个对象。
  • 值类型不存在同一性的问题。例如不能对一个变量判定是否与另一个变量持有相同的数字“2”,而判定他们是否都包含了数字2.
  • “===”实际上是判定两个变量是否持有相同的引用。在程序语言中,“==”通常被称为结构相等,“===”被称为指针相等或者引用相等。
  • 在swift中,类引用并不是唯一的引用的类型。swift中依然有指针,比如使用withUnsafeMutablePointer就会得到指针。

2. 浅复制(shallow copy)和深复制

  • 浅复制会对引用进行复制,但不会复制引用所指向的内容
  • 当把一个值类型对另一个值类型进行赋值的时候,对其中的引用类型所做的是浅复制。比如一个struct是一个值类型,但其可能包含各种类型,包括引用类型,当将其赋值给其他值类型的时候,其中的引用类型的关系被复制了,但内容并未被复制,所以即使被复制的是常量,他的引用关系不会变,但引用对象里的内容还是可能会变化。
  • 值语义(value semantics): 通过判断是否是深复制,来判断是否具有值语义。

3. 函数

  • 函数也是值,你可以将函数赋值给一个变量,或者作为数组的元素存在。
  • 函数是引用类型。
  • 定义在类中或者协议中的函数被称为方法。方法都有一个隐式的参数self。
  • 柯里化函数:如果一个函数不是接收多个参数,而只是一部分参数,并且返回一个接受其余参数的函数的话,这个函数就叫做柯里化函数。
  • 自由函数:不是方法的函数。
  • 静态派发和动态派发:自由函数和在结构体上调用的方法是静态派发的。对于这些函数的调用,在编译的时候已经确定。类或者协议上的方法是动态派发的。编译器在编译的时候不需要知道哪个函数将被调用。

4. Swift编程风格指南

  • 优先选择结构体而不是类,除非你必须使用到类的引用特性。
  • 除非你的设计就是为了类被继承,否则所有的类都应该加上final关键字。
  • 使用guard来确保提前退出方法。
  • 尽量使用不可变值,除非你需要某个值改变,否则都应该使用let。

相关文章

  • Advanced Swift - Some Tips(1) 引言

    1. 值类型与引用类型 结构体和枚举类型是值类型,类是引用类型。 引用类型具有同一性,可以使用“===”来检查两个...

  • 引言:some tips

    优势运动的核心理念就是成功并不是失败的对立面,因此对失败的研究并不能帮助我们学到什么成功的经验。 优势运动认为通过...

  • OC->Swift advanced tips(1)

    记录从Objective-C转向Swift过程中的一些高级用法1.预处理宏C/C++/Objective-C中可以...

  • About Swift

    1. Swift Magic <1> Swifter book ✔️✔️✔️<2> Advanced Swift...

  • Advanced Swift 1...5

    Advanced-Swift-Sample-Code 1. 介绍 <1>Swift 和其他语言的相似之处Swift...

  • 商务英语 Level4 Unit2 part2

    Interview Tips Here are some tips for how to conduct a pr...

  • Swift学习笔记--高级篇

    最近看了两本书, 第一本是Objc.io出的Advanced Swift和王巍大大出的Swifter tips. ...

  • some tips

    公司小哥准备要跟着我这组学习ruby,然后写了些小建议: 1. 锻炼身体,推荐keep或跑步 2. 至少每周三次,...

  • some tips

    1.土豆削皮后有大量的淀粉在表面(貌似刀切比用筛子处理的会好一些),在炒之前最好是用清水清洗一下。但是不用清洗太彻...

  • Some Tips

    1、访问私有属性 2、访问 bundle 中的 json 文件 3、隐藏导航栏返回标题 4、weak self 5...

网友评论

    本文标题:Advanced Swift - Some Tips(1) 引言

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