Swift-05-SizeOf&&SizeOfValue
在C中定义的运算符,可以作用于类型或者某个实际的变量,并返回其在内存中的尺寸size_t.
在Cocoa中,我们一般用来将数组生成NSData的时候传入数据长度。因为在OC里面,sizeOf这个C运算符被保留了。
char bytes[] = {1, 2, 3};
NSData *data = [NSData dataWithBytes:&bytes length:sizeof(bytes)];
C中的sizeOf有两个版本,既可以接受类型,也可以接受某个具体的值。
sizeOf(int)
sizeOf(a)
在Swift中,为了保证类型安全,sizeOf经过了一层包装,它不再是运算符,而是一个只能接受类型的方法。
我们还可以找到一个接受具体值,并返回尺寸的方法:sizeOfValue.这个方法返回的是Int,不是size_t。
var bytes:[CChar] = [1,2,3]
sizeofValue(bytes)
print(sizeofValue(bytes))----》8
虽然SizeofValue接受的是具体是,但是它和C的接收具体值的版本的sizeof行为并不相同。sizeofValue所返回的是这个值实际的大小,而并非其内容的大小。
如果我们在Swift中想表示上面的bytes的话,我们会将其类型写为CChar。在C或者OC中,对bytes做sizeof返回的是整个数组内容在内存中占据的尺寸。每个char为1,而数组元素为3,因此这个值是3.在Swift中,我们如果直接对bytes做sizeofValue操作的话,将返回8。
var bytes32:[CChar] = [1,2,3]
print(sizeofValue(bytes32))
var bytes44:[CChar] = [1,2,3]
let data = NSData(bytes: &bytes44, length: sizeof(CChar) * bytes44.count)
print(data)
print(sizeof(UInt16))
print(sizeof(MyEnum))
print(sizeofValue(MyEnum.A))
print(sizeofValue(MyEnum.A.rawValue)) 2
1
1
2
没有咋看懂。
Swift-05-SizeOf&&SizeOfValue的更多相关文章
- Swift 05.Block
Swift的函数用法还真是灵活.但是个人感觉更灵活的还是闭包. swift闭包的概念大抵相当于OC的block的概念.如果对于block的理解很透彻的话,闭包的原理性的东西还是很好理解的. 剩下的就是 ...
- Swift - 05 - 数值型字面量
//: Playground - noun: a place where people can play import UIKit var str = "Hello, playground& ...
- Swift Standard Library: Documented and undocumented built-in functions in the Swift standard library – the complete list with all 74 functions
Swift has 74 built-in functions but only seven of them are documented in the Swift book (“The Swift ...
- Swift中共有74个内建函数
Swift中共有74个内建函数,但是在Swift官方文档(“The Swift Programming Language”)中只记录了7中.剩下的67个都没有记录. 本文将列举Swift所有的内建 ...
- Swift的74标准功能
Swift中共同拥有74个内建函数,可是在Swift官方文档("The Swift Programming Language")中仅仅记录了7中.剩下的67个都没有记录. 本文将列 ...
- 【iOS】swift 74个Swift标准库函数
本文译自 Swift Standard Library: Documented and undocumented built-in functions in the Swift standard li ...
- 74个Swift标准库函数
74个Swift标准库函数 本文译自 Swift Standard Library: Documented and undocumented built-in functions in the Swi ...
- Happy Swifting!
Happy Swifting! 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 ...
- Swift游戏实战-跑酷熊猫 05 踩踏平台是怎么炼成的
这节内容我们一起学习下随机长度的踩踏平台的原理是怎么样的. 要点: 平台的组成 我们的平台由3部分组成 左: 中: 右: 其中中间部分是可以无缝衔接的,下面就是两个中间部分衔接在一起 要任何长度的平台 ...
- Swift 学习- 05 -- 集合类型
// 集合类型 // swift 提供 Arrays , Sets 和 Dictionaries 三种基本的集合类型用来存储数据 , 数组(Arrays) 是有序数据的集, 集合(Sets)是无序无重 ...
随机推荐
- CentOS6.4 配置Haproxy
Haproxy下载地址:http://pan.baidu.com/share/link?shareid=1787182295&uk=1829018343 也可用wget http://hapr ...
- jQuery 写的幻灯左右切换插件
<html> <head> <meta charset="utf-8"> <title>官网</title> <s ...
- QRadioButton 使用方法
QRadioButton 控件是Qt中实现多选一功能的控件,它的使用方法如下: 声明控件: QRadioButton *rbutton; 然后实现它的响应函数: void YourClass::on_ ...
- hdu-acm stepsHumble Numbers
这是我做的第六道动态规划水题,对动态规划差不多有了一个大致的概念.动态规划有几个关键因素,第一是最优子结构,第二是状态和状态转移方程.整个过程都是以 最优 为中心的.因此在状态转移方程中常涉及到几 ...
- TCP和UDP的135、137、138、139、445端口的作用
如果全是2000以上的系统,可以关闭137.138.139,只保留445 如果有xp系统,可能以上四个端口全部要打开 无论你的服务器中安装的是Windows 2000 Server,还是Windows ...
- 各分支Linux的镜像下载地址
https://openstack.redhat.com/Image_resources http://fedoraproject.org/en/get-fedora#clouds https ...
- HDU 1176 经典dp
记录最晚时间 从time为2枚举到最晚时间 每个时间段的x轴节点都等于上一个时间段的可触及的最大馅饼数 #include<stdio.h> #include<string.h> ...
- Javascript 统计复选框选中个数
var checked = document.getElementsByName("checked_c[]"); var checked_counts = 0; for(var i ...
- 用php随机生成福彩双色球号码的2种方法
不瞒您说,俺也是个双色球爱好者,经常买,但迟迟没有中过一等奖,哈哈.这里为大家介绍用php随机生成福彩双色球号码的二种方法,供朋友们学习参考.新的一年,祝大家中大奖,发大财. 方法一 复制代码代码如下 ...
- JS Date函数操作
1. 补充Format函数 // common functionsstart Date.prototype.Format = function(fmt) { //author: meizz var o ...