❤️❤️❤️swift中的Optional Type的?和!含义:其实就是一个装包和拆包的过程

optional的含义:
Optional事实上是一个枚举类型,Optional包含None和Some两种类型,而nil就是Optional.None,非nil就是Optional.Some。如果Optional变量在声明时不初始化,swift会调用init()来初始化变量为nil,而用非nil的值来初始化变量时,会通过Some(T)把该原始值包装,所以在之后使用的时候我们需要通过解包取出原始值才能使用。   
     问号?
     a.声明时添加?,告诉编译器这个是Optional的,如果声明时没有手动初始化,就自动初始化为nil
     b.在对变量值操作前添加?,判断如果变量是nil,则不响应后面的方法。
     
     叹号!
     a.声明时添加!,告诉编译器这个是Optional的,并且之后对该变量操作的时候,都隐式的在操作前添加!
     b.在对变量操作前添加!,表示默认为非nil,直接解包进行处理
使用?的场景:
可选?装包:
使用!的场景:
可选隐式解包:
必须使用!解包:
 
总结一下:
 
❤️❤️❤️swift和Objective-C混编使用
swift中使用OC: 
在项目工程的Build Settings中搜索并设置Bridging-Header-------- 头文件桥接,xxx(项目名)-Bridging-Header.h中导入OC中需要的类头文件,即 #import “Header.h”
OC中使用swift: 
在项目工程的Build Settings中搜索并设置packaging中的Product Module Name的名称—————然后在OC类中导入swift头文件,即 #import xxx(Product Module Name)-Swift.h 
混编的具体步骤演示如下:
前期工作:
第一步:创建一个swift工程文件Project,生成Project文件
第二步:在建好的swift项目中新建一个swift文件,设置类名为学生类Student,点击Next创建成功,生成Student.swift文件
第三步:再创建一个Objective-C文件,设置类名为课程类Course
第四步:点击Next,此时弹出一个弹出框,点击yes即可,生成Course.h和Course.m文件,还有xxx(工程名)-Bridging-Header.h文件,即 Project-Bridging-Header.h
 
好了,前期工作准备完毕,现在就是Objective-C和Swift的类混编使用了:
在Swift中使用Objective-C的类:
1.选中Project-Bridging-Header.h,进入它的文件中,然后导入Course.h头文件,即桥接双方的头文件
2.此时就可以在Student.swift中使用Course类了,如下所示
在Objective-C中使用Swift的类:
方法一:
1.进入工程的面板中找到Build Settings,搜索packaging,截图如下
2.可以看到Product Module Name这一项,既可以复制他后面的名字作为 $(PRODUCT_NAME:c99extidentifier)-swift.h头文件,当然也可以自己重新设置名称,不过不能以数字0开头,命名要规范。我设置一个新名字为"ProductName-swift.h",然后按Command+B快捷键编译一下,因为必须先编译生成Student.swift中的所有内容,然后才能在Course类中导入这个头文件
3.编译成功后,就可以在Course类中导入ProductName-swift.h了,即#import "ProductName-swift.h",可以看到如下我声明得到学生对象

此时,你可以按住Command键,然后点击#import “ProductName-Swift.h”可以进去看看编译的所有文件

    

方法二:

在创建工程时,可以直接在Objective-C的文件中导入固定的文件方式并编译一下即可,也即:

import "ProjectName-Swift.h",这个ProjectName:开始创建的工程名

在此实例下,导入方式为:import "Project-Swift.h"

转载于:https://www.cnblogs.com/XYQ-208910/p/4904379.html

swift:Optional Type 、Swift和Objective-C混编的讲解相关推荐

  1. Swift 与 Objective-C混编xxx-Swift.h File not found

    在iOS 开发中,由于苹果14年发布了Swift语言,具备简单实用.高效等诸多优点,越来越受开发者青睐.另外,由于Objective-C多年发展和稳定性,有很多框架(特别是商业SDK)采用Object ...

  2. Swift与OC混编过程中的配置

    女主宣言 在使用Swift进行iOS开发的过程中,经常涉及到Swift与OC混编的情况,有时主工程是OC的需要另外编入Swift代码,而有时主工程是Swift的需要另外编入OC代码.这其中涉及到修改一 ...

  3. OC与Swift混编 注意事项

    前言 随着Swift发展, 很多新的项目开始使用Swift作为首选语言. Swift语言以其简洁.快速.安全的特点获得了一大波粉丝,我也是其中之一. 项目背景:公司一些旧项目大都使用OC编写, 运营中 ...

  4. 百度App Objective-C/Swift 组件化混编之路(一)

    作者丨郭金.陈佳 来源丨百度App技术 一. 背景 1.1 Swift 发展历史 2010 年 7 月,克里斯(Chris Lattner)开始设计 Swift.完成基础架构后,克里斯带领开发小组陆续 ...

  5. 网易漫画Swift混编实践

    \ 本文为『移动前线』群在4月8日的分享总结整理而成,转载请注明来自『移动开发前线』公众号.\ 嘉宾介绍 \ 胡波,来自于网易杭州研究院,之前在网易杭研移动应用部参与网易公开课/网易看游戏/网易云阅读 ...

  6. Swift与C++混编 OpenCV初体验 图片打码~

    OpenCV初体验,给图片打码 提到OpenCV,相信大多数人都听说过,应用领域非常广泛,使用C++开发,天生具有跨平台的优势,我们学习一次,就可以在各个平台使用,这个还是很具有诱惑力的. 本文主要记 ...

  7. Swift和Objective-C混编注意事项

    前言 Swift已推出数年,与Objective-C相比Swift的语言机制及使用简易程度上更接地气,大大降低了iOS入门门槛.当然这对新入行的童鞋没来讲,的确算是福音,但对于整个iOS编程从业者来讲 ...

  8. Swift和Objective-C混编

    Swift和Objective-C混编的注意啦 2016-10-19 13:29 编辑: 不灭的小灯灯 分类:iOS开发 来源:仁伯安的简书 0  OCSwift混编 前言 Swift已推出数年,与O ...

  9. swift 打包sdk_在封装SDK中Swift和OC混编之相互调用

    oc和swift混编之相互调用.jpg 在非SDK中: 1.swift调用oc 步骤: 创建 工程名-Bridging-Header.h 放入oc的头文件,swift即可调用 在swift项目中或者在 ...

最新文章

  1. 快速学习者的高效学习策略
  2. robotframework自动化测试修炼宝典_自动化测试之框架Cucumber和RobotFramework的实战对比...
  3. 一加神秘新机入网:搭载天玑8100 首发长寿版150W超级闪充
  4. 算法:Minimum Path Sum(最小路径和)
  5. 充电器兼容qi是什么意思_什么是“经Qi认证”的无线充电器?
  6. 最常见的12道计算机基础面试题
  7. 悉尼大学计算机科学,悉尼大学计算机科学
  8. 人脸识别技术全面总结
  9. 54、消防控制室的设置要求
  10. (Python学习) 10位老师随机分配到4个教室,保证每个教室至少有2个老师
  11. 【荔枝派zero】usb虚拟串口实现
  12. 【gazebo要素4】传感器插件(Velodyne)
  13. 浙江工业大学计算机技术专业考研经验分享帖
  14. ae如何把已有图片当做蒙版_AE遮罩教程,如何用AE创建文字蒙版遮罩
  15. ssh mysql 导出excel_使用ssh远程执行命令批量导出数据库到本地(转)
  16. Python练习 4.26 ~ 5.6
  17. [翻译] LaTeX Error: Environment XXX undefined
  18. JAVA 虚拟机深入研究(二)——JVM虚拟机发展以及一些Java的新东西
  19. charAt、charCodeAt、fromCharCode作用
  20. 英文版权声明_【好书推荐】英文原版绘本 凯奖作家Steve Jenkins作品 Animal Dads 平装...

热门文章

  1. python getattr和getattribute_python中__getattr__和__getattribute__区别
  2. html非零正实数正则表达式,正数|非负数|正整数正小数和0 |金额正则表达式
  3. lass翻译_【专题讲座】政务翻译人才培训系列讲座(1)
  4. c语言串口通信_stm32 串口通信收发说明
  5. iphone7配置_iphone7黑屏开不了机怎么办
  6. linux查看通信延迟,低优先级进程延迟实时进程中的串行通信(Linux)
  7. linux openldap mysql_CentOS7安装OpenLDAP+MySQL+PHPLDAPadmin
  8. pysql与mysql的区别_postgresql与mysql的区别是什么
  9. m.2接口和nvme区别_原来M.2、SATA接口的固态盘有这样的差别,难怪大家都选“它”!...
  10. 个人计算机使用的标准键盘,计算机键盘的基本用法!