一、来源

  这道题来自网上一篇文章《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. CentOS6.5安装与配置JDK-7

    系统环境:centos-6.5 安装方式:rpm安装 软件:jdk-7-linux-i586.rpm 下载地址:http://www.oracle.com/technetwork/java/javas ...

  2. Mybatis终极案例之注解开发

    Mybatis终极案例之注解开发 一.注解开发实现CURD操作 1.环境搭建 参考入门案例,环境搭建主要分为如下几步: 1.配置pom.xml <packaging>jar</pac ...

  3. 深入了解PBKDF2:密码学中的关键推导函数

    title: 深入了解PBKDF2:密码学中的关键推导函数 date: 2024/4/20 20:37:35 updated: 2024/4/20 20:37:35 tags: 密码学 对称加密 哈希 ...

  4. 力扣1662(java&python)-检查两个字符串数组是否相等(简单)

    题目: 给你两个字符串数组 word1 和 word2 .如果两个数组表示的字符串相同,返回 true :否则,返回 false . 数组表示的字符串 是由数组中的所有元素 按顺序 连接形成的字符串. ...

  5. Timing:在线自习室快速搭建

    ​通过超低延迟的音视频通信技术.视频连麦.弱网传输算法,快速搭建自习场景,提升自习效率. 客户简介 ​ 氪细胞主打产品Timing,是国内最早推出,也是规模最大的在线自习室,是新一代的教育与社交融合平 ...

  6. 最佳实践丨三种典型场景下的云上虚拟IDC(私有池)选购指南

    ​简介:业务上云常态化,业务在云上资源的选购.弹性交付.自助化成为大趋势.不同行业的不同客户,业务发展阶段不一样,云上资源的成本投入在业务整体成本占比也不一样,最小化成本投入.最大化业务收益始终是不同 ...

  7. 前沿分享|阿里云数据库资深技术专家 姚奕玮:AnalyticDB MySQL离在线一体化技术揭秘

    ​简介: 本篇内容为2021云栖大会-云原生数据仓库AnalyticDB技术与实践峰会分论坛中,阿里云数据库资深技术专家 姚奕玮关于"AnalyticDB MySQL离在线一体化技术揭秘&q ...

  8. SAP集成技术(十三)SAP Cloud Integration

    异构应用环境给IT带来了各种问题.在这种情况下,混合集成环境尤其受到影响.同时,对于建立在混合IT环境上的数字化转型项目,数据集成和跨系统访问已经开始发挥核心作用.为了满足不断增长的需求,SAP Bu ...

  9. Solution Set - 贪心和数据结构

    感觉自己好菜啊,这个专题真的不太会. CF1439C Greedy Shopping Link&Submission. 容易发现,当此人连续买了一段物品之后,他的钱数至少减半.所以他最多只会买 ...

  10. ITIL4 服务价值系统(SVS):一场服务管理的革新之旅

    在这个数字化时代,每一家企业都在追求高效的服务管理和卓越的客户体验.今天,我们就来聊一聊ITIL4中的服务价值系统(Service Value System, SVS)--一个让服务管理变得更加直观和 ...