壹拾肆

有些安排是多余的 这片空旷对我有益

看科幻小说常常会感到一种作为人类的自卑感,对于宇宙来说,我们只是其中数以亿计星球中的一个,即使拥有灿烂的文化和恢弘的历史,也一粒尘埃反射出的微弱光芒。

而作为个体,虽然每个人都有自己引以为傲的事情,经历过的人和事、在事件中的感受,我们也因为这些而变得与众不同。然而目光宇宙,时间、空间,都能比量出我们的不值一提。甚至可能只是一场灾难,我们日常曾以为很深刻的痛苦也会立马失去他原来的分量。

阅读全文 »

一、背景

迭代项目的时候碰到一个问题, 原因是负责的内容有一项是封装各大 AI 开放平台的 SDK 集成到一个 SDK 里,然后输出统一的接口,目的是为了可以在不同的 AI 中快速切换并使用。但由于之前输出给了兄弟公司使用,他们在一个音乐 SDK 中用语音 SDK 实现语音点歌的功能。然后当我的主应用同时使用两个 SDK 时,由于音乐 SDK 中实现了语音 SDK 的代理,所以我在上层再初始化语音 SDK 设置代理就不起作用。

阅读全文 »

  最近在优化一个项目的过程,过程中发现之前开发时由于刚接触 Swift 的原因,在 Swift 中的类里使用了很多 OC 的写法,比如字典数组对象会习惯性用 NSDictionaryNSArray来初始化,而不是用 [KeyType: ValueType]() 或是 [SomeType]() 这种类型来实例化变量。虽然在使用上没有什么问题,但看起来多少有点。。。不优雅。
  当我把大部分类型都修改成 Swift 中的写法后(部分未修改是因为使用 String 类型来给文本做截取和富文本定义,实在不如 NSString 顺手,这种不顺手让我不由想起 Stack Overflow 上看到的一个评论:I thougt i already getting along well with Swift.)发现,原来一些变量是否为空的判断中,使用 Swift 里的 optional 类型会方便很多。
  比如解析一个 json 数据,如果层级多而且里面每个元素都是不确定的,那么可能就需要每个层级都判一次空。而如果使用 ? 来设置当前对象为可选值,只需要在最后一层实际使用到对象值时,判一次空就 OK 了。
  对于 ? 和 ! 的区别和总结,网上有很多文章,在这里就不重复造轮子了。下面就对这个 optional 的自己两个疑问做个记录。   

? 和 ! 是表示两种不同的类型吗,一种是可以为空,一种不可以为空?

阅读全文 »

前言

UITableView 同时设置圆角和阴影时发现在视图上只会显示圆角,原因是因为当我们设置 masksToBoundsYES 允许圆角剪裁时,圆角以外的阴影也会一并被剪裁掉。在网上找了一下解决方法,ios阴影圆角共存 这篇文章提供了一个思路,就是把圆角和阴影放在不同的两个控件上实现,然后叠加到一块。基本思路是正确的,但实际操作发现在最后插入作为阴影层的 CALayer,调用的方法可能会照成层级有点混乱的问题。下面展示一下我解决这个问题的方法和用 Swift 实现的代码。

阅读全文 »

  看了一本图说量子物理学史的书,《上帝的骰子》,书名来自于爱因斯坦的一句话:上帝不会掷骰子。去年也有一本书很火叫《量子物理史話:上帝掷骰子嗎?》,不说大家为什么都一窝蜂的抓着骰子不放,从这些现象我们可以看出,量子的不确定性的迷人魅力让许多人趋之如骛。

阅读全文 »