iOS有哪些数据类型/基本数据类型?

简述

本文主要探究使用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

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注