简述

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

iOS有哪些数据类型/基本数据类型?的更多相关文章

  1. python numPy模块 与numpy里的数据类型、数据类型对象dtype

    学习链接:http://www.runoob.com/numpy/numpy-tutorial.html 官方链接:https://numpy.org/devdocs/user/quickstart. ...

  2. Python数据类型-1 数据类型介绍

    数据类型 在python这门语言中,数据类型分为两种. 内置的和自定义的. 内置的包括数字.字符串.布尔.列表.元组.字典.Bytes.集合这些常用的以及一些不太常用的数据类型.而自定义的,一般以类的 ...

  3. iOS学习之C语言数据类型

    1.进制 0 1 2 3 4 5 6 7 8 9 A B C D E F 0X123(十六进制) 0123(八进制) 位权:单位数字的基本数值 2.数据类型 关键字    说明  字节大小 char  ...

  4. iOS开发——OC篇&特殊数据类型

    一些特殊的数据类型 id.nil.Nil.SEL ,IMP Objective-C中有一些很有趣的数据类型经常会被错误地理解.他们中的大多数都可以在/usr/include/objc/objc.h或者 ...

  5. ios沙盒机制---基本数据类型的存取和文件的基本操作

    沙盒快速存储及读取 存储:  [[NSUserDefaults standardUserDefaults] setObject:@"abc" forKey:@"1&quo ...

  6. Oracle中的数据类型和数据类型之间的转换

    Oracle中的数据类型 /* ORACLE 中的数据类型: char 长度固定 范围:1-2000 VARCHAR2 长度可变 范围:1-4000 LONG 长度可变 最大的范围2gb 长字符类型 ...

  7. MySQL的基本数据类型与数据类型优化

    1.选择优化的数据类型的标准 1)更小的通常更好. 一般情况下,应该尽量使用可以正确存储数据的最小数据类型.更小的数据类型通常更快,因为他们占用更少的磁盘.内存和CPU缓存,并且处理时需要的CPU周期 ...

  8. C#的数据类型、数据类型的转化

    一.c#有15个预定义类型,其中13个是值类型,两个是引用类型(string 和 object)这里主要说明整型.浮点型.布尔型以及引用型 1.整型数据 2.浮点型 浮点型从精度有低到高有float. ...

  9. 关于容器类型数据的强转一共:str() list() set() tuple() dict() 都可以转换成对应的数据类型 /Number 数据类型的强转一共: int() bool() flaot() complex() 都可以转换成对应的数据类型

    # ###强制转换成字典类型 # 多级容器数据:该类型是容器数据,并且里面的元素还是容器类型数据 # ###二级容器 # 二级列表 listvar = [1,3,4,5,[6,7,8,9]] res ...

随机推荐

  1. @Component默认是单例还是多例?

    @Component默认是单例还是多例?   答: @Component注解默认实例化的对象是单例,如果想声明成多例对象可以使用@Scope("prototype") @Repos ...

  2. mysql无法导入函数和存储过程解决方法

    1. mysql> SET GLOBAL log_bin_trust_function_creators = 1; 2. 系统启动时 --log-bin-trust-function-creat ...

  3. Qt编写自定义控件46-树状导航栏

    一.前言 树状导航栏控件是所有控件中最牛逼最经典最厉害的一个,在很多购买者中,使用频率也是最高,因为该导航控件集合了非常多的展示效果,比如左侧图标+右侧箭头+元素前面的图标设置+各种颜色设置等,全部涵 ...

  4. python中pop(),popitem()的整理

    在python中,列表,字典,有序字典的删除操作有些凌乱,所以决定记录下,以便以后用乱了. 列表: 列表删除有三种方式: l.pop() l.remove() del l[3:8] 已下面的code为 ...

  5. ubuntu18.04 server配置静态ip,新的网络工具netplan的使用方法【转:http://forum.ubuntu.org.cn/viewtopic.php?t=487463】

    最新发布的ubuntu18.04 server,启用了新的网络工具netplan,对于命令行配置网络参数跟之前的版本有比较大的差别,现在介绍如下:1.其网络配置文件是放在/etc/netplan/50 ...

  6. Egret入门学习日记 --- 第十七篇(书中 7.4~8.2节 内容)

    第十七篇(书中 7.4~8.2节 内容) 昨天看到 7.3 节,那么今天. 开始 7.4节.     好吧,这些其他的服务器运行知识,就不搞了... 至此,7.4节 内容结束. 开始 7.5节 内容. ...

  7. Redis ZSet 有序集合

    有序集合类型与集合类型的区别就是他是有序的.有序集合是在集合的基础上为每一个元素关联一个分数,这就让有序集合不仅支持插入,删除,判断元素是否存在等操作外,还支持获取分数最高/最低的前N个元素.有序集合 ...

  8. controller中获取当前项目物理绝对路径

    用HttpServletRequest request获取 request.getSession().getServletContext().getRealPath(""); 上面 ...

  9. python 使用 RabbitMQ

    一.RabbitMQ消息队列介绍 RabbitMQ是在两个独立得python程序,或其他语言交互时使用. RabbitMQ:erlang语言 开发的. Python中连接RabbitMQ的模块:pik ...

  10. PCL学习(五)如何在mesh模型上sample更多点及三维物体姿态估计

    ---恢复内容开始--- 最近在做关于物体姿态估计的项目 基本思路就是 我们在估计物体的pose的时候,需要用分割得到的点云与模型库中的模型做匹配 1.通过基于RANSANC的SAC-IA将点云和模型 ...