美文网首页
01-swift爬坑笔记

01-swift爬坑笔记

作者: 贵叔勇闯天涯 | 来源:发表于2022-08-02 12:54 被阅读0次

swift简介

内容综述-基础语法和特性

  • 01-swift简介

  • 02-基础数据类型

  • 03-运算符和表达式

  • 04-流程控制

  • 05-集合类

  • 06-函数和闭包

  • 07-面向对象编程

  • 08-泛型

  • 09-多线程

    • 理论和实践
    • 玩转gcd
    • 基础设施和编程范式
  • 10-其他话题a

    • 常见的第三方库、swiftUI
    • swift和object-c混编
    • swift运行时
    • ......
  • 11-项目实战

swift历史 2014(1.0)-2019.3 (5.0)

Swift2.0

  • Error handling 增强
  • guard 语法
  • 协议支持扩展
  • ...

Swift3.0

  • 新的GCD和Core Graphics
  • NS前缀从老的Foundation类型中移除
  • 内联序列函数sequence
  • 新增fileprivate和open俩个权限控制
  • 移除了诸多特弃用的特性,比如++、--(俩个-)运算符
  • ......

Swift4.0

  • Extension中科院访问private的属性
  • 类型和协议的组合类型
  • Associated Type科院追加约束语句
  • 新的Key Paths语法
  • 下标支持泛型
  • 字符串增强

Swift5.0

  • ABI稳定
  • Raw strings
  • 标准款新增Result
  • 定义了与Python或Ruby等脚本语言互操作的动态可调用类型
  • ......

Swift Objec-c

swift可以面向协议编程、函数式编程、面向对象编程

Object-C以面向对象编程为主、当然你也可以引入类似ReactiveCocoa的类库进行函数式编程

  • 类型安全

    • swift是一门类型安全的语言。鼓励程序员在代码中清楚明确值的类型。如果代码中使用了一个字符串string,那么你不能错误地传递一个整形Int给它。因为swift是类型安全的,他会在代码编译的时候做类型检查,并且把所有不匹配的类型作为一个错误标记出来。这样使得程序员在开发中尽可能早地发现和修正错误
    • 而Objective-C则不然,你声明一个NSString变量,仍然可以传一个NSNumber给它,尽管编译器会抱怨,但是你仍然可以作为NSNumber来使用它
  • 值类型增强

  • 在swift中,典型的有struct、enum以及tuple都是值类型。而平时使用的Int、Double、Float、String、Array、Dictionary、Set其实都是用结构体实现的,也是值类型

  • Objective-C中,NSNumber、NSString以及集合类对象都是指针类型

  • 枚举增强

  • Swift的枚举可以使用类型、浮点型、字符串等,还能拥有属性和方法,甚至支持泛型、协议、扩展等

  • Objective-C里面的枚举则鸡肋很多

  • 泛型

  • Swift中支持泛型,也指出泛型的类型约束等特性

  • 苹果推出了Swift2.0版本,为了让开发者从Objective-C更好地过渡到Swift上,苹果有为Objective-C带来了Generics泛型支持,不过Objective-C的反省约束也仅停留在编译器警告阶段

  • 协议和扩展

    • swift对协议的支持更加丰富,配合扩展(extension)、泛型、关联类型等可以实现面向协议编程,从而大大提高代码的灵活性。同时,swift中的protocol还可以用于值类型,如结构体和枚举
  • Objective-C的协议缺乏强约束,提供的Optional特性往往程维很多问题的来源,而如果放弃optional又会让实现代价过大

  • 函数和闭包

  • Swift函数是一等公民,可以直接定义函数类型变量,可以作为其他函数参数传递,可以作为函数返回值返回

  • Objective-C里面函数仍然是次等公民,需要selector封装或者使用block才能模拟Swift中类似的效果

swift 强大的命令行工具

playground
swift playground wwdc2016

相关文章

  • 01-swift爬坑笔记

    swift简介 内容综述-基础语法和特性 01-swift简介 02-基础数据类型 03-运算符和表达式 04-流...

  • iOS逆向1021-砸壳&&Theos

    Theos爬坑笔记 关于Theos的坑!!!!1.不要在中文目录下编译工程.否则报错!2.packageName(...

  • VUE 爬坑笔记 (4)

    兄弟组件之间传值 创建一个空的vue实例,作为事件总线 在数据源位置使用这个vue实例的$emit方法自定义一个事...

  • VUE 爬坑笔记 (1)

    MVVM (Model-View-Viewmodel) MVVM是什么? M 数据模型,主要来自后台数据 V 视图...

  • VUE 爬坑笔记 (2)

    ref 属性 ref属性标示对dom的引用,值是唯一值,定义在dom标签内 获取时使用this.$refs.属性值...

  • VUE 爬坑笔记 (3)

    VUE组件 模块化 和 组件化 区别 模块化:从代码角度分析问题,把可复用的代码抽离为单独的模块 好处:方便程序员...

  • Android开发爬坑笔记

    1. 数组元素总是莫名丢失?说不定是这个原因 (1)数组list2所有元素都赋值给list1,地址一样。list1...

  • 工作爬坑小笔记

    1.写邮件,写材料,一定要写总结,写自己的结论和建议。而不是只将内容汇总以福利发领导,等领导自己分析,再下意见。 ...

  • 工作爬坑笔记2

    当两个人在言语上针锋相对、互不相让的时候,一定要理智的想一下,这件事情是不是值得你大动干戈,争论赢了是不是对你有实...

  • iOS 共享到Evernote 印象笔记

    iOS 共享爬坑记 废话不多说,直接开始印象笔记的共享吧。 在info.plist文件中配置scheme,item...

网友评论

      本文标题:01-swift爬坑笔记

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