一句话笔记(30)

一句话笔记,某段时间内遇到或看到的某个可记录的点。 2017-09-25

  • 一直打印 [aqme] 254: AQDefaultDevice (173): skipping input stream 0 0 0x0
  • iOS 中 authCode 加密不适配中文的情况
  • 让低版本的 Xcode 适配 高版本 Xcode Api 方法
一、不断打印 [aqme] 254: AQDefaultDevice (173): skipping input stream 0 0 0x0

在使用完 YTPlayerView 点击视频后,发现一直在打印这个 [aqme] 254: AQDefaultDevice (173): skipping input stream 0 0 0x0 日志, 还以为是什么地方没被释放呢

后来才在发现是 模拟器在 Xcode 上的一个 BUG,可以通过如下调试:

具体两步骤

真机上是木有的,其实也可以不理会,只是略微有点强迫症的,可以这样操作下。
方法图片来源: https://github.com/muhku/FreeStreamer/issues/313

二、iOS 中 authCode 加密不适配中文的情况

以前我有用 3DES 加密与后台来通讯的,这次我们项目中用的是 autoCode 的方法,但是我们这边发现我们写的这块对 英文之外的语言不支持,然后这就尴尬啦

  • discuz 经典php加密解密函数 authcode 解析,先了解下 authCode, 我们 Objective-C 中主要是翻译下其加解密的。

  • 目前的问题是: 当我们加密非英语的时候,后台解密不出来

  • 目测原因: iOS 中具体的 编码 和 其 PHP 对应不上

  • 暂时对于我们这边的解决的方法是: 在其我们这边异或运算加密之前在对其 Base64 处理下。意思就是多一层加密,再异或运算先处理下,让其规避这个问题。

PS: 备注学习:

先记录下:ASCII、iso8859-1 、GB2312、GBK 、Unicode 、UTF8的区别

  • ASCII: 当今通用的单字节编码系统。
  • GB2312:ANSI编码中的一种,对ASNI编码最初始的ASCII编码进行扩充,为了满足国内在计算机中使用汉字的需要,中国国家标准总局发布了一系列的汉子字符集国家标准编码,统称为GB码,或国标码。
  • GBK: 汉字内码扩展规范,K为扩展的汉语拼音中“扩”字的声母。GBK兼容GB2312.
  • iso8859-1 : 属于单字节编码,最多能表示的字符范围是0-255,应用于英文系列,是最早的编码。
  • Unicode: 是一个字符集,为为每一个「字符」分配一个唯一的 ID,由国际组织设计,可以容纳全世界所有语言文字的编码方案。
  • UTF 的由来:考虑到 Unicode编码不兼容 iso8859-1编码,而且容易占用更多的空间,因为对于英文字母,Unicode 也需要两个字节来表示,所以 Unicode 不便于传输和存储,并产生了UTF 。
  • UTF-8: 是一个编码规则,将「码位」转换为字节序列的规则。 用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24为(三个字节)来编码。

注意 GBK 和 UTF-8 是如何转换的,都是需要通过 Unicode 转换的。

一句话笔记(30)_第1张图片
GBK 和 UTF-8 的转换

此处笔记来源:

  • GBK,UTF-8,和ISO8859-1之间的编码与解码
  • Unicode 和 UTF-8 有何区别?
三、让低版本的 Xcode 适配 高版本 Xcode Api 的方法
#if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_10_3
    // iOS SDK 10.3 以后版本的处理
#else
    // iOS SDK 10.3 之前版本的处理
#endif
  • #define __IPHONE_10_3 == 103000
  • #define __IPHONE_11_0 == 110000

当然也有小伙伴直接判断是否大于等于 110000 的,也可行。

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 110000
// New Action
#endif

注意这样的操作是为了让 Xcode 8 在运行 Xcode 9 方法的时候不会报错。当然你想 Xcode 8 运行 iOS 11 的真机又是另一码事的!

参考来源: iOS开发之多系统版本兼容

你可能感兴趣的:(一句话笔记(30))