美文网首页
Swift学习日记:!与?区别

Swift学习日记:!与?区别

作者: 不懂冯先生 | 来源:发表于2017-11-10 16:55 被阅读5次

问号? 是Optional, 意思是对类型进行了非空处理, 包含两个类型None跟Some()

问号?

a.声明时添加?,告诉编译器这个是Optional的,如果声明时没有手动初始化,就自动初始化为nil
b.在对变量值操作前添加?,判断如果变量时nil,则不响应后面的方法。

叹号!

.声明时添加!,告诉编译器这个是Optional的,并且之后对该变量操作的时候,都隐式的在操作前添加!

b.在对变量操作前添加!,表示默认为非nil,直接解包进行处理

总结

C 和 Objective-C 中并没有可选类型这个概念。最接近的是 Objective-C 中的一个特性,一个方法要不返回一个对象要不返回nil,nil表示“缺少一个合法的对象”。然而,这只对对象起作用——对于结构体,基本的 C 类型或者枚举类型不起作用。对于这些类型,Objective-C 方法一般会返回一个特殊值(比如NSNotFound)来暗示值缺失。这种方法假设方法的调用者知道并记得对特殊值进行判断。然而,Swift 的可选类型可以让你暗示任意类型的值缺失,并不需要一个特殊值

通俗的概括就是

1.C语言根本没有可选类型这么一说
2.OC中的nil是指向不存在对象即空对象的指针,不可以赋值给基本数据类型
3.Swift中nil不是指针,他就是一个明确的值,表示值的缺失,任何类型都可以,不只是对象

PS: 日积月累, 天天进步!
最近没怎么更新简书, 公司事情这段比较多, 有点忙! 最大的原因是自己惰性犯了 。定的计划, 没有按时完成,但是做的比较好的是每周仍然坚持跑步运动四次。
--END--

相关文章

  • Swift学习日记:!与?区别

    问号? 是Optional, 意思是对类型进行了非空处理, 包含两个类型None跟Some() 问号? a.声明时...

  • OC与swift的区别

    OC与Swift的区别一(文件结构) OC与Swift的区别一(常量、变量、运算符) OC与Swift的区别三(条...

  • Swift语言基础

    //Swift 与 OC 的区别

  • OC与Swift的主要区别

    swift与OC的主要区别就是语法区别,其他大抵相同. 区别1: swift中使用let定义常量,var定义变量....

  • swift5版本学习

    swift与OC区别:swift与OC1、Swift容易阅读,语法和文件结构简易化。2、Swift更易于维护,文件...

  • Swift--001:Swift编译 & SIL分析

    Swift与OC编译区别 swift与oc编译区别Swfit使用前端编译器swiftc,降级编译成IR,再通过后端...

  • iOS 10.17日记

    swift 学习 1 static和class的区别 2 学习手势的使用 3 swift 中kvo的使用(和oc...

  • 34 开发手记

    一,class 与 static 的区别 二,初始化器 三,oc 与 swift 的区别 四,class与stru...

  • 关于Swift的一点点总结

    关于Swift的一点点总结 Welcome to Swift!! Swift与OC的区别(只适合新手看,因为我也是...

  • Swift基础:一.Swift与OC区别:

    一.Swift与OC区别: 1.swift程序的入口是UIApplicationMain; 2.OC的类是...

网友评论

      本文标题:Swift学习日记:!与?区别

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