OC学习29:数据类型

张建 lol

OC数据类型

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

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

OC包括C语言中所有的数据类型

C数据类型

  1. 基本数据类型

整型:int long
字符型:char
浮点型:float double
枚举型: enum 枚举名 {枚举元素}

  1. 构造类型

数组类型, 结构体类型, 共用体类型

  1. 指针类型

int*
char*

  1. 空类型

void

  1. typedef自定义类型

Cocoa类型

  1. BOOL类型存储:YES NO

  2. Boolean类型存储:ture false

  3. class类型:类

NSString,NSNumber,NSArray,NSMutableArray,NSData等等,这些都是Class类型的,创建后就直接是对象了

  1. id类型:万能指针

  2. nil与NULL

  3. SEL方法选择器

  4. blcok代码段

类型限定修饰词

  1. 除了上图中基本类型之外,还有一些类型限定修饰词

short短型,修饰int、double;

long长型,修饰int、double;

signed有符号型,修饰int、char;

unsigned 无符号型,修饰int、char;

这些限定词经常用来限定int型,在限定int类型时int可以省略;
short和long会改变int型的长度,在不同编译器长度不相同,但是一般short长度不大于int,int长度不大于long;
signed和unsigned不会改变类型长度,仅表示最高位是否为符号位,其中unsigned表示大于等于0的正数;

  1. 取值范围

为了以后开发中能够方便查找,并正确的使用数据类型,下面是部分数据类型的取值范围:
int:-2147483648~2147483647
unsigned int:0~4294967295
short:-32768~32767
unsigned short:0~65535
long: -2147483648~2147483647
unsigned long:0~4294967295

  1. 存储空间

下面列出的是常用数据类型占用的存储空间

  1. 我们可以通过Xcode,使用 sizeof() 方法,验证上面的基本数据类型所占字节大小。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
2020-07-21 21:49:47.233672+0800 OC数据类型[22953:1507928] bool size:1
2020-07-21 21:49:47.234546+0800 OC数据类型[22953:1507928] BOOL size:1
2020-07-21 21:49:47.237067+0800 OC数据类型[22953:1507928] Boolean size:1
2020-07-21 21:49:47.237290+0800 OC数据类型[22953:1507928] boolean_t size:4
2020-07-21 21:49:47.237466+0800 OC数据类型

[22953:1507928] short size:2
2020-07-21 21:49:47.237538+0800 OC数据类型[22953:1507928] unsigned short size:2
2020-07-21 21:49:47.237712+0800 OC数据类型

[22953:1507928] int size:4
2020-07-21 21:49:47.237773+0800 OC数据类型[22953:1507928] int8_t size:1
2020-07-21 21:49:47.237927+0800 OC数据类型[22953:1507928] int16_t size:2
2020-07-21 21:49:47.238008+0800 OC数据类型[22953:1507928] int32_t size:4
2020-07-21 21:49:47.238056+0800 OC数据类型[22953:1507928] int64_t size:8
2020-07-21 21:49:47.238274+0800 OC数据类型[22953:1507928] unsigned int size:4
2020-07-21 21:49:47.238423+0800 OC数据类型

[22953:1507928] long size:8
2020-07-21 21:49:47.238481+0800 OC数据类型[22953:1507928] long long size:8
2020-07-21 21:49:47.238627+0800 OC数据类型[22953:1507928] unsigned long size:8
2020-07-21 21:49:47.238684+0800 OC数据类型

[22953:1507928] NSInteger size:8
2020-07-21 21:49:47.242465+0800 OC数据类型[22953:1507928] NSUInteger size:8
2020-07-21 21:49:47.242653+0800 OC数据类型

[22953:1507928] char size:1
2020-07-21 21:49:47.242720+0800 OC数据类型[22953:1507928] unichar size:2
2020-07-21 21:49:47.242763+0800 OC数据类型[22953:1507928] unsigned char size:1
2020-07-21 21:49:47.242838+0800 OC数据类型

[22953:1507928] CGFloat size:8
2020-07-21 21:49:47.242890+0800 OC数据类型[22953:1507928] float size:4
2020-07-21 21:49:47.242958+0800 OC数据类型[22953:1507928] double size:8
  • Post title:OC学习29:数据类型
  • Post author:张建
  • Create time:2020-07-17 20:48:42
  • Post link:https://redefine.ohevan.com/2020/07/17/OC/OC学习29:数据类型/
  • Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.
On this page
OC学习29:数据类型