swift中,Optional、?与!之间的关系

本文详细介绍了Swift中Optional类型、问号(?)与感叹号(!)的使用方式及其区别。通过实例讲解了如何正确使用Optional来避免运行时崩溃,并解释了NilLiteralConvertible的概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

swift中,Optional、?与!之间的关系

 

Optional <ClassName>  ClassName? 等价

 

 

 

对 ClassName! 强制取值会导致崩溃(如果对象为nil时候,取值就会崩溃)

 

 

 

imageView!.image 是对 imageView 强制解包, imageView.image! 则是对 image 的强制解包, 如果解包后发现为nil, 则崩溃

 

 

除了 ! 与 ? , 还存在一种叫 NilLiteralConvertible 的东东

 

'?' must be followed by a call, member lookup, or subscript

 

 

小结

1. 使用问号?的对象允许出现nil,使用感叹号!的对象出现nil就会崩溃

2. 使用问号?的场景都要求对象的右边有内容,声明的时候除外

3. 可以将问号?与感叹号!理解为拆包操作,?支持包为空,而!则在包为空时崩溃

 

转载于:https://www.cnblogs.com/YouXianMing/p/4830698.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值