赵雅智_Swift(4)_断言
来源:互联网 发布:炉石传说友谊赛淘宝 编辑:程序博客网 时间:2024/05/11 02:09
可选可以让你判断值是否存在,你可以在代码中优雅地处理值缺失的情况。然而,在某些情况下,如果值缺失或者值并不满足特定的条件,你的代码可能并不需要继续执行。这时,你可以在你的代码中触发一个断言(assertion)来结束代码运行并通过调试来找到值缺失的原因。
使用断言进行调试
断言会在运行时判断一个逻辑条件是否为true。从字面意思来说,断言“断言”一个条件是否为真。你可以使用断言来保证在运行其他代码之前,某些重要的条件已经被满足。如果条件判断为true,代码运行会继续进行;如果条件判断为false,代码运行停止,你的应用被终止。
如果你的代码在调试环境下触发了一个断言,比如你在 Xcode 中构建并运行一个应用,你可以清楚地看到不合法的状态发生在哪里并检查断言被触发时你的应用的状态。此外,断言允许你附加一条调试信息。
你可以使用全局assert函数来写一个断言。向assert函数传入一个结果为true或者false的表达式以及一条信息,当表达式为false的时候这条信息会被显示:
let age = -3 assert(age >= 0, "A person's age cannot be less than zero") // 因为 age < 0,所以断言会触发
在这个例子中,只有age >= 0为true的时候代码运行才会继续,也就是说,当age的值非负的时候。如果age的值是负数,就像代码中那样,age >= 0为false,断言被触发,结束应用。
断言信息不能使用字符串插值。断言信息可以省略,就像这样:
assert(age >= 0)
何时使用断言
当条件可能为假时使用断言,但是最终一定要保证条件为真,这样你的代码才能继续运行。断言的适用情景:
- 整数的附属脚本索引被传入一个自定义附属脚本实现,但是下标索引值可能太小或者太大。
- 需要给函数传入一个值,但是非法的值可能导致函数不能正常执行。
- 一个可选值现在是nil,但是后面的代码运行需要一个非nil值。
请参考附属脚本和函数。
注意:断言可能导致你的应用终止运行,所以你应当仔细设计你的代码来让非法条件不会出现。然而,在你的应用发布之前,有时候非法条件可能出现,这时使用断言可以快速发现问题。
- 赵雅智_Swift(4)_断言
- 赵雅智_Swift(3)_swift注释
- 赵雅智_Swift(3)_swift注释 .
- 赵雅智_Swift(1)_swift简介及类型
- 赵雅智_Swift(2)_swift常量和变量
- [绍棠_swift] Swift中assert(断言)的使用
- [绍棠_swift] Swift3.0的学习枚举、断言、函数嵌套
- Swift教程_零基础学习Swift完整实例(一)_swift实例简介
- Swift教程_swift常见问题(0005)_完美解决Cannot override 'dealloc'异常
- Swift教程_零基础学习Swift完整实例(四)_swift完整实例(搭建程序结构、构建storyboard)
- Swift教程_零基础学习Swift完整实例(五)_swift完整实例(构建数据层)
- Swift教程_零基础学习Swift完整实例(六)_swift完整实例(构建控制层)
- Swift教程_零基础学习Swift完整实例(七)_swift完整实例(构建展示层)
- Swift教程_swift常见问题(0002)_完美处理SourceKitService Crashed异常,6.1.1大部分已经修复
- Swift教程_swift常见问题(0006)_完美解决swift数组索引是变量时的内存溢出
- [绍棠_swift] swift的简单学习(字符串、4元组、类型转换及运算)
- Swift教程_零基础学习Swift完整实例(二)_swift基础(简单值、控制流、方法和闭包)
- Swift教程_零基础学习Swift完整实例(三)_swift基础(对象和类、枚举和结构、协议和扩展、泛型)
- offsetof实现方式
- 重庆长时间开窗更容易招惹疾病
- php 输出缓存的魅力
- 《7天学会伪静态》 第二节:伪静态组件介绍
- linux将中文插入Oracle后显示乱码 解决方案
- 赵雅智_Swift(4)_断言
- JTA事务和JDBC事务
- 浅谈linux中setuid权限 及文件相关知识
- 线形布局下的layout_weight(比重)属性
- JS中字符串的相关操作
- tomcat可以正常启动但是在Eclipse下不可以正常启动
- java面向对象
- Unofficial AirPlay Protocol Specification
- 进程优先级优化(避免休眠的时候进程被KILL,主要面向service)(笔记)