1 什么是 OC 语言?

OC 语言即面向对象语言,它扩展了 ANSI C 语言,将 SmallTalk 式的消息传递机制加入到 ANSI C 中.它是苹果 OS 和 iOS 以及相关的 API,Cocoa 和 Cocoa Touch 的主要编程语言.

2 OC 语言的特点:

  • 支持 C 语言语法,是 ANSI-C 语言的一个超集,是一种高效的编程语言.
  • 是 C 语言面向对象的扩展,完全支持面向对象的特性.
  • 简洁易读的编程风格,使编程和阅读更加清晰.
  • 兼容性好,可以在项目中直接导入 C 和 C++ 的头文件,也可以在文件中直接使用OC 和 C++ 编程.

3 iOS 的生态系统不仅仅指其软件方面的丰富,更多指的是其设备的多样性.

4 Core OS

是用 FreeBSD 和Mach所改写的Darwin,是开源的符合 POSIX 标准的一个 UNIX 核心.该层包含所有 iOS 的基础功能(所有的这些功能都是通过 C 语言的 API 来提供的).另外该层具有 UNIX 特点,因此当将 UNIX 上的功能移植到 iOS 上的时候用到Core OS 的 API.同时该层还提供了硬件和系统框架之间的接口,但出于安全考虑,只有有限的框架能使用.

5 Core services

它在 Core OS 的基础上提供了更为丰富的功能,其中包括 Foundation.Framework 和 Core Foundation.Framework.之所以叫 Foundation 是因为,它提供了处理字串,排列,时间等基础功能.).其中 Foundation 属于 OC 是 API, 而 Core Foundation 属于 C 的 API.另外 Core Sercies 还提供了Security(处理认证,密码管理,安全性管理),Core Location(定位)SQLite(轻量级的数据库),Address Book(处理电话本)等功能.

6 Media

即提供图像,音乐,影片等多媒体功能.其中图片包括2D(Quartz 2D) 和3D(Open GLES).音乐对应的模块是Core Audio 和Open AL. 影片用 Media Player来支持.最后还提供了Core Animation动画支持.

7 Cocoa Touch

它是 OC的 API其中最核心的部分的 UIKit.Framework,应用程序上的各种组件全部由它来提供实现.除此之外还负责多点触摸.文字的输出,图片网页的显示,相机/文件的存取以及加速感应的部分.

8 swift

它继承了 OC 的面向对象优点,同时又具有简便的语法结构.它具有以下特点.

  • 闭包的统一
  • 元祖和多个返回值
  • 泛型
  • 快速而简洁的迭代范围/集合
  • 支持的方法和扩展的协议
  • 函数式的编程模式
  • 不通过编译即可查看效果
  • 高效强大
  • 安全

9 OC 和 Swift 之间的区别

  • Swift句末不需要加分号,除非一行中写几行代码
  • Swift没有 main 函数,函数的执行是从上往下执行.
  • Swift没有. h 和. m 文件只有. Swift文件.
  • Swift没有地址的概念
  • Swift的数据类型会自动判断(变量用 var, 常量用let)
  • 强制类型转换: OC的强转à(int)a, Swift的强转àint(a)
  • 整数的数据类型可以通过 .min 和 .max来获取最大和最小值
  • 定义类型:OC:Typedef int Myint  Swift:Typealiaes Myint = int
  • Swift的摸除取余运算支持小数
  • Swift中 BOOL 类型中不在是 OC 中的非0即真,而是 true 为真 false 为假
  • Swift的赋值运算没有返回值
  • Swift可以多对多赋值: let(x,y) = (1,2)
  • Swift的循环语句必须加{},就算只有一行代码,也要加
  • Swift的 switch 语句后面可以跟任何数据类型,并且里面不用 break

注:如果不想要break的效果 即后面的都想执行 那就写上关键字  fallThrough,但在fallThrough后面就不能再定义常量变量了

10 swift 独有的特点

  • 运算: a…b 表示[a,b]  a..<b 表示(a,b)
  • 独有的溢出运算符:即当你赋值的时候大于其最大值范围,则会报错
  • Swift独有元祖类型

Var a = (x:15,y:20.0)

其中 a 就是元祖名,里面有两个元素 x和 y.

取出赋值:a.x = 10或者 a.0 = 10(默认有下标)

修改类型: var a = (int,string) = (10,21.0)

打印时: printIn(a) = (10,20.0)

用下划线省略不需要的元素 var a = (_,20.0)

  • Switch 语句中与元祖类型的时候,还可以用类似 SQL 语句的语法,添加过滤条件.
  • 函数的外部参数名

原来是形式: func Sum(num1:int,num2:int) àint{}  调用: Sum(10,20)

现在:func Sum(numOne num1:int,numTwo num2:int) àint{}

调用: Sum(numOne:10,numTwo:20)

  • 函数的默认参数值

func addPerson(name:string,age:Int = 18) à string{}

调用: addPerson(“tom”)

注:修改年龄时 addPerson(“Tom”,age:19)

OC 和 swift 小结的更多相关文章

  1. iOS代码规范(OC和Swift)

    下面说下iOS的代码规范问题,如果大家觉得还不错,可以直接用到项目中,有不同意见 可以在下面讨论下. 相信很多人工作中最烦的就是代码不规范,命名不规范,曾经见过一个VC里有3个按钮被命名为button ...

  2. IOS --- OC与Swift混编

    swift 语言出来后,可能新的项目直接使用swift来开发,但可能在过程中会遇到一些情况,某些已用OC写好的类或封装好的模块,不想再在swift 中再写一次,哪就使用混编.这个在IOS8中是允许的. ...

  3. iOS OC和Swift进行互相调用

    有时候 ,我们会涉及到双向混合编程,特别是OC和swift的互相引用. swift调用oc的方法: 1.桥接文件,一般是swift工程,在创建一个oc文件时,系统自动添加(不用改名,直接默认即可) 2 ...

  4. 关于C、OC、C++、OC++、Swift的一些常识

    关于C.OC.C++.OC++.Swift的一些常识 OC是C语言的一个超集,是一门面向对象的语言,因为苹果的崛起而火,API主要是cocoa(OSX)和cocoatouch(iOS),GCC 和 C ...

  5. Swift语言学习之OC和Swift混编

    本文转自http://www.helloswift.com.cn/swiftbase/2015/0112/3469.html iOS OC和Swift混编 1.创建一个swift或者oc的工程:我这里 ...

  6. 【转】IOS --- OC与Swift混编

    群里大神发的网址,感觉有用就先收录了,暂时没时间看SWIFT,感觉代码简洁,但是可阅读性不是太高,有些代码让系统去判断类型,同样的,我们看代码的时候也得自己去判断类型,或许看多就习惯了,有时间再说吧, ...

  7. OC与Swift的区别四(条件语句)

    12.条件语句的区别,此处只写区别,没有指出区别的其他方面oc与swift基本一致 12.1 oc中for if switch语句体如果只有一行代码,则{}可以省略 swift中for if swit ...

  8. swift小结01--基础篇

    2014年推出的swift目前已来到了3.0,日趋稳定,这个是之前学习整理的关于swift的资料,分享给大家,希望有用,写的不足的地方还请见谅. 语言背景:         Swift 语言由苹果公司 ...

  9. OC调用Swift 整理步骤!总结别人的!方便自己查找!

    1. 2. 上面的修改了一个配置项,有一个Product Module Name在后面会使用. 在工程里面点击File/New/File…,选择iOS/Source/Cocoa Touch Class ...

随机推荐

  1. ML 徒手系列 拉格朗日乘子法

    拉格朗日乘子法是解决极值问题的方法. 本方法是计算多元函数在约束条件下的极值问题的方法. 1.多元函数与约束问题 如下图所示,f(x,y)为多元函数,g(x,y)=c为约束条件.目的是计算在约束条件下 ...

  2. win2008 64位 + oracle11G 64位 IIS7.5 配置WEBSERVICE

    第一个错误: 安装过程依旧是那样简单,但在配好IIS站点,准备连接数据库的时候出错了,以下是错误提示:System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更 ...

  3. Android中使用gzip传递数据

    HTTP协议上的GZIP编码是一种用来改进WEB应用程序性能的技术.大流量的WEB站点常常使用GZIP压缩技术来减少文件大小,减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时 ...

  4. Android系统默认设置

    修改Settings源码,可修改系统设置项,Settings数据被存放于com.android.providers.settings/databases/settings.db中,如果想修改系统启动后 ...

  5. 重载PostNcDestroy()函数做一些清理工作

    转自:http://zhidao.baidu.com/link?url=W-OOWnvUx58w1esKfRAMtvbzBhjfyKodhk8j2DcTtlcDKAOy8sBNW-8Ey2RAhc0l ...

  6. System.Data.SQLite数据库简介

    SQLite介绍 在介绍System.Data.SQLite之前需要介绍一下SQLite,SQLite是一个类似于Access的单机版数据库管理系统,它将所有数据库的定义(包括定义.表.索引和数据本身 ...

  7. STM32的TAMPER-RTC管脚作为Tamper使用 - 防拆机

    当 TAMPER引脚上的信号从 0变成1或者从 1变成 0(取决于备份控制寄存器BKP_CR的 TPAL位),会产生一个侵入检测事件.侵入检测事件将所有数据备份寄存器内容清除.  然而为了避免丢失侵入 ...

  8. git status对应中文名称

    git status显示出来的中文文档是一串字符码,不能正常识别 git config --global core.quotepath false 这一句代码就可以帮你

  9. Codeforces Gym 100015H Hidden Code 暴力

    Hidden Code 题目连接: http://codeforces.com/gym/100015/attachments Description It's time to put your hac ...

  10. Codeforces Gym 100231G Voracious Steve 记忆化搜索

    Voracious Steve 题目连接: http://codeforces.com/gym/100231/attachments Description 有两个人在玩一个游戏 有一个盆子里面有n个 ...