swift基础目录

  • class和struct区别
  • swift扩展
  • Set独有的方法
  • map,filter,reduce作用
  • map和flatmap 的区别
  • 什么是 copy on write?
  • guard使用场景
  • defer 使用场景
  • string和nsstring区别
  • 什么时候使用 final
  • dynamic 的作用
  • 什么时候使用 @objc
  • swift相对于oc优点
  • swift中的closure于OC中block的区别?
  • swift中协议试编程?
  • swift元组

class和struct区别

class为引用类型,struct为值类型,struct不可以继承
引用类型:赋值享用同一内存地址,拷贝为浅拷贝
值类型:赋值时会重新创造一个新的内存地址,拷贝为深拷贝

swift扩展

swift中没有分类,通过扩展实现相同效果

Set独有的方法

取并集 a|b union
取交集 a&b intersection
取差集 a-b subtracting
取对称差集 a-b | b-a symmetricDifference

map,filter,reduce作用

map:映射 将一个列表转化为另一个列表
filter:筛选 筛选出想要的元素
reduce:把数组元素组合计算为一个值,并且会接受一个初始值,这个初始值的类型可以和数组元素类型不同

map和flatmap 的区别

flatmap会丢掉返回值为nil的元素
flatmap会降低数组维数

什么是 copy on write?

swift中值类型并不是开始赋值时就去赋值,而是在需要写入时才去复制

guard使用场景

guard与if类似,但是guard在解包(Optional)时更优雅,即解包的作用域更广

defer 使用场景

defer语句块中代码,会在当前作用域结束前调用。多个defer时,后加入的先执行

string和nsstring区别

string是值类型,nsstring是引用类型

什么时候使用 final

final用于限制继承和重写

dynamic 的作用

swift是一门静态语言,若想实现kvo这种效果,需在属性前加上dynamic

什么时候使用 @objc

swift和oc混编时,能够正常调用swift代码

swift相对于oc优点

简单易读,代码量少,更加清晰,易于维护
更加安全,optional的使用
泛型,结构体,枚举都很强大
函数式编程(map,faltmap,filture,reduce)
协议试编程

swift中的closure于OC中block的区别?

closure是匿名函数,block为结构体对象
closure修改外部变量的值不用加__block
逃逸闭包:一个传入函数的闭包如果在函数执行结束之后才会被调用,那么这个闭包就叫做逃逸闭包。

swift中协议试编程?

协议可以通过扩展,写方法的实现,类遵守当前协议,即可调用方法。

swift元组

(a,b) = (b,a) 可以实现值得交换

iOS面试 swift篇相关推荐

  1. iOS开发Swift篇—(六)流程控制

    iOS开发Swift篇-(六)流程控制 一.swift中的流程控制 Swift支持的流程结构如下: 循环结构:for.for-in.while.do-while 选择结构:if.switch 注意:这 ...

  2. 李洪强iOS开发Swift篇—02_变量和常量

    李洪强iOS开发Swift篇-02_变量和常量 一.语言的性能 (1)根据WWDC的展示 在进行复杂对象排序时Objective-C的性能是Python的2.8倍,Swift的性能是Python的3. ...

  3. android 无appid分享_App ID 和Bundle ID 有什么不同?ios面试攻克篇(六)

    '写在前面的话' 这些是我对iOS面试时会碰到的问题的解决方法,整理出来分享给大家,有些错误不要 笑了,希望对大家有所帮助.大家有更好的解决办法也欢迎沟通交流. 一直以来都有写点儿东西的想法,就从笔记 ...

  4. 分割view窗口不响应onmousewheel_什么是响应者链?ios面试攻克篇(三)

    '写在前面的话' 这些是我对iOS面试时会碰到的问题的解决方法, 整理出来分享给大家,有些错误不要 太好笑,希望对大家有所帮助. 大家有更好的解决办法也欢迎沟通交流. 一直以来都有写点儿东西的想法, ...

  5. 什么是cocoa和cocoa Touch?iOS面试攻克篇(一)

    '写在前面的话' 这些是我对iOS面试时会碰到的问题的解决方法,整理出来分享给大家,有些错误不要 笑了,希望对大家有所帮助.大家有更好的解决办法也欢迎沟通交流. 一直以来都有写点儿东西的想法,就从笔记 ...

  6. pythonios脚本语言-iOS开发Swift篇—(一)简单介绍

    一.简介 Swift是苹果于2014年WWDC(苹果开发者大会)发布的全新编程语言 Swift在天朝译为"雨燕",是它的LOGO 是一只燕子,跟Objective-C一样,可以用于 ...

  7. iOS开发Swift篇—(七)函数(1)

    一.函数的定义 (1)函数的定义格式 1 func 函数名(形参列表) -> 返回值类型 { 2 // 函数体... 3 4 } (2)形参列表的格式 形参名1: 形参类型1, 形参名2: 形参 ...

  8. iOS开发Swift篇—(三)字符串和数据类型

    一.字符串 字符串是String类型的数据,用双引号""包住文字内容  let website = "http://www.github.com" 1.字符串的 ...

  9. iOS面试准备 - ios篇

    iOS面试准备 - ios篇 ios面试准备 - objective-c篇 ios面试准备 - 网络篇 IOS面试准备 - C++篇 iOS面试准备 - 其他篇 运行时 https://juejin. ...

  10. ios面试准备 - 网络篇

    iOS面试准备 - ios篇 ios面试准备 - objective-c篇 ios面试准备 - 网络篇 IOS面试准备 - C++篇 iOS面试准备 - 其他篇 http和https是什么?http和 ...

最新文章

  1. create-react-app支持antd按需导入
  2. linux之reboot
  3. android studio 单步调试jni,android studio实现Jni单步调试-标准配置教程
  4. swift学习笔记之-析构过程
  5. c++11: less的用法
  6. 例题2-1 在屏幕上显示一个短句。
  7. angular新版 父组件修改子组件某个div样式
  8. 我的梦想是十年内成为架构师,该怎么办?
  9. 特殊的求和(函数和循环)
  10. jpannel设置位置xy_实用的摄影技巧!10种常见摄影场景的单反相机设置技巧!
  11. CentOs中iptables配置允许mysql远程访问
  12. 关于 p3p ie 跨域 问题
  13. redis持久化功能
  14. Bootstrap 源码版文件结构
  15. 如何开始rails项目
  16. ES6(Module 模块化)
  17. 一份针对于新手的多线程实践
  18. mysql点击计数器_高性能Mysql(第3版)_网站点击计数器
  19. 删除数组中指定元素_删除js数组中的指定元素,有这两步就够了
  20. 软件测试基础知识大全(新手入门必备)

热门文章

  1. vue项目移动端、pc端适配方案(px转rem)
  2. 转帖-在Eclipse中开发JSF
  3. 安装Hadoop2.10.1
  4. 光纤通道交换机的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  5. 都在说视频号,真有机会?
  6. pillow图像格式转化和缩放操作
  7. 浏览器刷新vue为什么不会走beforeDestroy和destroyed生命周期
  8. mmd的ray渲染是怎么回事呢
  9. Horizon 桌面用户会话10h后超时断开
  10. bt服务器搭建 linux_linux系统架设BT服务器的详细教程