简述

本文主要探究使用OC作为iOS开发语言时,我们能使用哪些数据类型。


一切类型始于C。

C语言的类型

基本数据类型:

基本数据类型(fundamental data types)也叫原始数据类型(primitive data types)

整型、字符型、浮点型、枚举型

C数据类型及内存占用

枚举型在计算机内部以 int 类型存储

除了基本数据类型,C还有

构造类型:

数组类型, 结构体类型(struct), 共用/联合体类型(union)

union一般在对单片机等内存比较小的设备进行编程时才使用。

指针类型:

data_type *pointer_name

由于指针在实质上是一个内存地址,内存地址的长度跟CPU的寻址有关(与data_type无关)

所以在32位系统上, 指针占据4个字节;在64位系统上,指针占据8个字节

空类型(void):

空类型一般用于函数的返回值,表示不需要返回任何类型。

由于void类型只是一个抽象概念,并不会存在于内存中,自然就没有字节占用。


有了类,世间万物皆可定义。

OC语言类型

由于Objective-C是C语言的严格超集,因此以上的数据类型也是OC数据类型。

相比于C

OC是一门面向对象语言,如同C++一样支持用户定义类型(class)

用户定义类型为Cocoa框架的诞生提供了可能。


类型越来越复杂,代码越来越简洁。

iOS数据类型

一般而言,我们所说的数据类型/基本数据类型都是指一门语言的。

iOS数据类型 = C数据类型 + Cocoa类

iOS数据类型不是一种严谨的叫法,实际上指的是C数据类型加上Cocoa框架集合(Foundation、UIKit等)中定义的的数据类型,也即Cocoa类(泛指所有基于Objective-C运行时且派生自根类NSObject的类)。

Foundation框架中定义的NSObject类是iOS中最重要的数据类型,用户定义的类都需要继承自它从而获得调用iOS系统资源的能力。Foundation中还有一个重要的集合Collection)概念,其包含了NSArray、NSSet、NSDictionarry以及各自的可变类型;此外,还有NSString、NSMutabString、NSNumber等重要的类型。以上提及的类型均继承自NSObject,是用户定义类型(class)而并非构造类型(struct),它们在被赋值或者被传入函数或者方法时,不会发生值拷贝,而是传递现有实例的引用。

总结

iOS数据类型

注:由于在iOS中BOOL实际上是signed char类型的重命名,NSInteger等也大同小异,因而并没有将它们归为新的类型。

参考

C/基本数据类型

C 语言中不同类型指针的大小是否完全相同,为什么?

iOS布尔类型

内存:栈和堆(C / Swift)

NSObjectNSNumber

最新文章

  1. Mysql对用户操作加审计功能——初级版
  2. Spring Data Solr教程(翻译)
  3. c语言背后的运行机制
  4. Double跟double
  5. APP测试--功能测试
  6. [51nod1355] 斐波那契的最小公倍数
  7. 026-微软Ajax异步组件
  8. Linux 命令整理 (有不正确的随时补充)
  9. 【K8S学习笔记】Part3:同一Pod中多个容器间使用共享卷进行通信
  10. H.__mro__) MRO- C3算法
  11. Arduino与Air800开发板使用UART通信:传输DHT22传感器数据
  12. 删数问题(NOI94)
  13. filter和map的区别
  14. UVa 120 煎饼
  15. Spring Cloud Sleuth进阶实战
  16. 关于seo优化的核心思想
  17. Linux使用vim进行多文件查找和替换的方法
  18. windows2003密码忘记了该如何处理
  19. Think PHP递归获取所有的子分类的ID (删除当前及子分类)
  20. WIN7 64位配置X86 MySQL 数据源

热门文章

  1. osg ifc数据渲染着色器
  2. Github排名靠前的iOS库
  3. 123457123456#0#-----com.threeapp.MakerHanBao01----儿童汉堡制作游戏
  4. fetch jsonp请求接口
  5. async/await小知识点
  6. 使用jquery操作iframe中的元素
  7. Detect cycle in a directed graph
  8. B9 Concurrent 重入锁(ReentrantLock)
  9. kubeadm 部署kubernetes1.14
  10. Docker 部署Jira8.1.0