简述

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

    void initGLWidgetAndViewer() { osgViewer::ViewerBase::ThreadingModel threadingModel = osgViewer::Vie ...

  2. java生成二维码打印到浏览器

    java生成二维码打印到浏览器   解决方法: pom.xml的依赖两个jar包: <!-- https://mvnrepository.com/artifact/com.google.zxin ...

  3. PAT 甲级 1054 The Dominant Color (20 分)(简单题)

    1054 The Dominant Color (20 分)   Behind the scenes in the computer's memory, color is always talked ...

  4. (九)UML之活动图

    一.概念 二. 在Rational rose 中画活动图 2.1 创建Activity Diagram 2.2 画图

  5. 设置Android模拟器的窗口大小

    Android SDK 中两个位置可以设置Android模拟器的窗口大小 1.设置Android模拟器的分辨率 Android Virtual Device Manager中创建AVD时,窗口中部Re ...

  6. 给 textbox TextMode="password" 赋值后显示出来

    在做一个修改用户资料的页面的时候,发现用 <asp:TextBox ID="txtPwd" runat="server" TextMode="P ...

  7. css3实现左右锯齿效果

    要实现的效果:css3实现左右锯齿效果 <!DOCTYPE html> <html> <head> <meta charset=" utf-8&qu ...

  8. js 如何让两个等长的数组产生键值对关系

    问题的准确描述:js 将两个长度一样的一维数组 合成一个一维数组,A为键值,B为key值 js 将两个长度一样的一维数组 合成一个一维数组,A为键值,B为key值 如 var arr1=['a','b ...

  9. sql-获取重复和删除重复数据

    //获取相同用户名的数据 //删除相同的数据,保留最大的id或者最小的id min(id) delete from user where id not in(select max(id) from u ...

  10. docker安装并持久化postgresql数据库

    安装docker步骤略过 1.拉取postgresql镜像 docker pull postgresql 2.创建本地卷,数据卷可以在容器之间共享和重用, 默认会一直存在,即使容器被删除(docker ...