浅谈Swift中的Optional类型
学习Swift时,绝大多数初学者都会被Swift中的Optional这个类型所困扰,比如“问号是什么?”、“叹号是什么?”、“为什么这里要加问号/叹号?”等等,这篇文章将会结合本人的一些经验来谈谈Swift的Optional类型。 为什么会有Optional类型 Swift是一门静态语言,在Swift中,所有的变量常量都需要在编译期间确定类型,在确…
NSNotificationCenter研究小记
1.NSNotificationCenter对observer的引用是弱引用,即引用计数不会增加。 2.在iOS 9之前,这个引用类似于unsafe_unretained,observer对象被销毁后不会被置为nil,因此接收到通知时会导致野指针而崩溃。 3.在iOS 9以上,这个引用类似于weak,即使没有执行removeObserver方法,在…
如何从2亿个随机整数中找出中间值?
看到这个问题时,相信大多数人都会想:“这不是很简单嘛,先排序,然后最中间那个数不就是了?” 好像很有道理,但是大家往往忽略了一个问题,2亿个32位的整数就要占用4GB的内存空间,而内存空间往往不像我们想象中的那么充裕。 “那么,使用归并排序呢?每次先排序小部分。”,归并排序有一个不可避免的问题,虽然排序一小部分的时候占用的内存较小,但是总归是要合并…
Unicode, ANSI, UTF-8, Unicode Big Endian编码的区别
转自知乎 作者:于洋 链接:https://www.zhihu.com/question/23374078/answer/69732605 很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物。他们看到8个开关状态是好的,于是他们把这称为”字节“。再后来,他们又做了一些可以处理这些字节的机器,机器开动了,可以…
thumbnail
应该记住:数组和指针是不同的事物
为什么会引起混乱? 首先,请允许我强调一下本章的重要观点。 C语言的数组和指针是完全不同的。 大家都说C语言的指针比较难,可是真正地让初学者“挠墙”的,并不是指针自身的使用,而是“混淆了数组和指针”。此外,很多“坑爹”的入门书对指针和数组的讲解也是极其混乱。 比如,K&R中就有下面一段文字(p.119) C语言的指针和数组之间有很强的关联关系,因此…
thumbnail
iOS扫描12位数条形码却拿到了个13位的条形码怎么办?
在工作中遇到了这个一个问题,我们的APP中有扫描条形码的功能,但是最近由用户反应扫描条形码查询不到信息,到数据库中查了发现用户上传的条形码是以0开头的13位条形码。 随后根据用户的描述,在某东上找到了该商品的条形码(上图),发现该条形码只有12位而使用我们的APP扫描得到的条形码却是0300087234016,不难看出其实前面多出了一个0。 这好办…
32位CPU(iPhone5)出现的NSInteger溢出问题
在我们的APP中,有一处地方展示的是“生日”,这个生日数据是请求服务器返回的数据,在上一个版本发布之后陆续地有用户反馈说每次修改完生日就变成了1969年或1970年的日期,与后台的哥们沟通了之后发现,APP传给服务器的参数有时候甚至可能是负的(参数是毫秒数)。 那一天我们几乎花了一整天的时间去复现这一个Bug,然而并没有找到原因,直到下午五点…… …
iOS如何统计中英文混合的字符串字节数
有时候我们在开发过程中,服务端使用了varchar来保存字符串,这时候如果直接用字符串的.length属性获得字符串长度的话可能会导致字符串在服务端数据库中被截断。比如varchar(256)可以存储128个汉字或者256个英文字母,而你上传的字符串超过了128个汉字的长度。但是我们也不能直接判断字符串的length是否小于等于128,因为当字符串…