Swift之optional(可选类型)

swfit中新添加了optional这一概念。optional可以是任何类型,也就是说,我们创建任何对象的时候就可以只管创建,系统会帮你管理,自动识别类型。

也正是因为optional的原因,swift才更具有类型安全。关于optional的定义不再多说,下面就说说关于optional经常遇到的问题。

声明一个实例变量,var btn = UIButton(),或者var btn : UIButton!或者 var btn : UIButton?,第一种为声明实例变量的同时,并创建它,下面用的时候就不用再创建了。后面两个只是声明有这个实例变量,用的时候还需要再创建。 当你确定这个btn一定会存在的时候,可以使用第一种或者第二种,当你不确定的时候就可以使用第三种,在UIButton后面加?。前两种跟OC并没有什么不同,这里就详细说一下第三种 var btn :UIButton? 这种。

如果是调用btn的set、get方法的时候,都需要在btn后面加?,也就是btn?.frame。。。。特别的,如果是get方法,需要加!,(btn?.frame)!.

这些如果忘记添加了,系统会给你提示让你添加。

但是如果是字符串的话,即使按照系统的来,也会出错,如下。

这就是optional带来的一些麻烦。解决这个问题也简单,只需要确定这个类型就可以。比如var str : String?改为 var str : String 或者使用之前,先强制转换。建议声明属性的时候,直接使用!代替?。问题也会少很多。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift 介绍 简介 Swift 语言由苹果公司在 2014 年推出,用来撰写 OS X 和 iOS 应用程序 ...
    大L君阅读 8,557评论 3 25
  • 2014年的苹果全球开发者大会(WWDC),当Craig Federighi向全世界宣布“We have new ...
    yeshenlong520阅读 6,822评论 0 9
  • SwiftDay011.MySwiftimport UIKitprintln("Hello Swift!")var...
    smile丽语阅读 9,265评论 0 6
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,773评论 19 139
  • ———————————————回答好下面的足够了---------------------------------...
    恒爱DE问候阅读 5,702评论 0 4