文章目录
- 本文主要探究使用OC作为iOS开发语言时,我们能使用哪些数据类型。 一切类型始于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类型只是一个抽象概念,并不会存在于内存中,自然就没有字节占用。 有了类,世间万物皆可定义。
- 由于Objective-C是C语言的严格超集,因此以上的数据类型也是OC数据类型。 相比于C OC是一门面向对象语言,如同C++一样支持用户定义类型(class)。 用户定义类型为Cocoa框架的诞生提供了可能。 类型越来越复杂,代码越来越简洁。
- iOS数据类型 注:由于在iOS中BOOL实际上是signed char类型的重命名,NSInteger等也大同小异,因而并没有将它们归为新的类型。
本文主要探究使用OC作为iOS开发语言时,我们能使用哪些数据类型。
一切类型始于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类型只是一个抽象概念,并不会存在于内存中,自然就没有字节占用。
有了类,世间万物皆可定义。
由于Objective-C是C语言的严格超集,因此以上的数据类型也是OC数据类型。
相比于C
OC是一门面向对象语言,如同C++一样支持用户定义类型(class)。
用户定义类型为Cocoa框架的诞生提供了可能。
类型越来越复杂,代码越来越简洁。
一般而言,我们所说的数据类型/基本数据类型都是指一门语言的。
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等也大同小异,因而并没有将它们归为新的类型。


发表回复