一、来源

  这道题来自网上一篇文章《100家公司iOS面试题管理》,这份题目虽然题目质量不高,但是覆盖面比较全,有学习的价值

二、解析

  1、swift 比 OC更年轻,这意味着 swift 可以采用其它语言优秀的语言特性,使swift更简洁、容易阅读维护,采用更少的代码编写更多的东西

    比如OC独有的中括号被人诟病,以及OC语言异步编程block嵌套后对齐的方式十分丑陋,swift更好优化了这一点。

  2、OC建立在C语言之上,利用消息转发机制实现动态化,一方面增加了灵活性同时却降低了程序的运行效率。OC的内存管理内部多处使用了类或者全局的spinlock同样降低效率。

    swift是否进行类NSObject的动态化是可选的,可以根据需求进行编译时的方法绑定,这样可以加快执行速度。 

    因此swift的效率理论上比OC要高。   

  3、Swift区分值类型和引用类型、并对值类型作为参数进行了优化,比如写时拷贝,这样方便了多线程编程,减少了锁的使用,同样加快了效率。

  4、Swift和OC的内存都是使用引用计数,与OC不同的是,OC中依然可以使用C语言层面的对象,这样内存管理相对来说更复杂一点。

  5、Swift语言中加强了类型的校验,比如let和var,?和!,减少错误的产生

  6、因为可以无缝使用C++和C库,现在某些项目依然使用OC较多,swift的变化快,部分语法向前不兼容更是加剧了这一点。在国内应用上,OC比Swift更多。

  7、Swift可以面向协议编程实现多继承的特性,可以函数式编程,给予语言编程更多模式选择。OC已经不再更新了。

  8、Swift有跨平台的计划,现在的语言不跨平台很难生存,全平台是趋势。

面试题一《swift和oc的区别》的更多相关文章

  1. 浅谈Swift和OC的区别

    前言 转眼Swift3都出来快一年了,从OC到Swift也经历了很多,所以对两者的一些使用区别也总结了一点,暂且记录下,权当自己的一个笔记. 当然其中一些区别可能大家都有耳闻,所以这里也会结合自身的一 ...

  2. Swift与OC区别

    一.Swift与OC区别: 1.swift程序的入口是UIApplicationMain; 2.OC的类是以.h和.m组成的;swift是一.swift结尾的; 3.OC的类是以@interface和 ...

  3. 【Swfit】Swift与OC两种语法写单例的区别

    Swift与OC两种语法写单例的区别 例如写一个NetworkTools的单例 (1)OC写单例 + (instancetype)sharedNetworkTools { static id inst ...

  4. Swift语法之 ---- ?和!区别

    1.常量和变量 Swift语言中是用let来定义常量,并且要初始化.var来定义变量,在let或者var后面申明类型,冒号+空格,然后再加上类型名称. 2.optional(可选)变量 可选变量用于处 ...

  5. Swift相比OC语言有哪些优点

    Swift相比OC语言有哪些优点 1.自动做类型推断 2.可以保证类型使用安全 Swif类型说明符 --Swift增加了Tuple表示元组类型 --Swift增加了Optional表示可选类型 常量一 ...

  6. swift与OC之间不得不知道的21点

    swift与OC之间不得不知道的21点   自6月的WWDC大会上由苹果的大神Chris Lattner向我们首次展示swift至今已经大半年时间了,虽然绝大部分软件公司代码里还都见不到一丁点swif ...

  7. Swift与OC混编

    OC调用Swift的方法:添加 import "xxxx-Swift.h" 头文件即可 Swift调用OC的方法:需要建立桥接: xxxx-Bridging-Header.h 头文 ...

  8. iOS开发--Swift 如何完成工程中Swift和OC的混编桥接(Cocoapods同样适用)

    由于SDK现在大部分都是OC版本, 所以假如你是一名主要以Swift语言进行开发的开发者, 就要面临如何让OC和Swift兼容在一个工程中, 如果你没有进行过这样的操作, 会感觉异常的茫然, 不用担心 ...

  9. iOS获取手机型号,类似iphone 7这种 含swift和OC

    获取手机设备信息,如name.model.version等,但如果想获取具体的手机型号,如iphone5.5s这种,就需要如下这种 swift: func phonetype () -> Str ...

  10. swift调用oc语言文件,第三方库文件或者自己创建的oc文件——简书作者

    Swift是怎样调用OC的第三方库的呢?请看下面详情: 情况一: 1.首先打开Xcode,iOS->Application->Single View Application, 选Next. ...

随机推荐

  1. Flask搭建APP统一管理平台

    主页效果: 1.从数据库中获取所有APP的信息,每个卡片上展示APP名称.bundle id.版本构建历史记录,系统类型等构建信息 2.支持查询筛选,模糊查询 3.点击历史记录跳转APP历史记录详情页 ...

  2. 顺通鞋服ERP库存管理系统

    鞋服ERP库存管理系统是专门为鞋服行业设计的企业资源规划软件,它提供了一系列库存管理功能,帮助鞋服企业有效管理库存流程和提升库存管理效率.以下是一些鞋服ERP库存管理系统常见的功能和特点: 1. 库存 ...

  3. vue 插件(swiper)使用

    两种方法: 1... 打开https://www.swiper.com.cn/download/index.html 下载css,js... 把js,css引入public里面的index.html文 ...

  4. 开源小白到核心开发——我与 sealer 的成长故事

    简介: 下面将以作者本人与 sealer 的一段成长故事来带领大家体验从小白到核心功能开发者的开源之旅,同时本文也作为一篇引领开源小白入门的文章供大家参考. 作者:周欣元 个人简介   大家好,我是周 ...

  5. 【USENIX ATC】支持异构GPU集群的超大规模模型的高效的分布式训练框架Whale

    简介: 高效大模型训练框架Whale(EPL)入选USENIX ATC 作者:张杰.贾贤艳 近日,阿里云机器学习PAI关于深度学习模型高效的分布式训练框架的论文< Whale: Efficien ...

  6. 大型 Web 应用插件化架构探索

    简介: 随着 Web 技术的逐渐成熟,越来越多的应用架构趋向于复杂,例如阿里云等巨型控制台项目,每个产品下都有各自的团队来负责维护和迭代.不论是维护还是发布以及管控成本都随着业务体量的增长而逐渐不可控 ...

  7. [FAQ] Windows 终端 `git diff` 出现 LF 空格 ^M 符号, 处理方式

      可能是终端内的换行配置和 IDE 当中的不一致. 比如 PHPStorm 的: Git 终端使用 git config core.autocrlf 查看是 true 还是 false. 是 tru ...

  8. Windows 查看端口是被什么程序占用

    netstat -ano | grep 27017 tasklist | grep 11496 Link:https://www.cnblogs.com/farwish/p/15262813.html

  9. WPF 如何知道当前有多少个 DispatcherTime 在运行

    在 WPF 调试中,对于 DispatcherTimer 定时器的执行,没有直观的调试方法.本文来告诉大家如何在 WPF 中调试当前主线程有多少个 DispatcherTimer 在运行 在 WPF ...

  10. JavaScript字符串String方法介绍及使用示例

    实例方法 charAt() charCodeAt() 返回索引位置的字符 'hello'.charAt(0) //h 等价 'hello'.[0] //返回索引位置的字符的Unicode码点 'hel ...