坑逼的 iOS 11数组语法糖

0x00 题记

最近老板买了一套直播代码, 在运行 iOS 端的时候一堆问题, 主要是因为 iOS 11的, 有一些是后台问题(域名接入问题), 还有一些是 SDK 比较老了, 老的原因还是因为 iOS 11默默的改了底层内容, 然后比较贴近的错误就是数组语法糖取值问题!!!


0x01 简单说些其他问题

  • A _这个 select 方法需要声明:
错误内容: Declaration of 'select' must be imported from module 'Darwin.POSIX.sys.time'
解决办法: 引入头文件   #include <sys/time.h>
原因是:   Xcode 9 放弃了 select 方法, 必须引入 sys/time.h
  • B _在七牛SDK 中的报错


错误内容: check_compile_time() expected parameter declarator
解决办法: 将 check_compile_time 修改为 __Check_Compile_Time
原因是:  Xcode 9 中 usr/include/AssertMacros.h 这个路径文件内的宏不一样了原始写法为 __Check_Compile_Time
  • C _iOS 11 navigationBar 透明问题

在项目中, 对 navigationBar 的子视图遍历 hidden 了一遍, 但是 iOS 11 的时候就出问题了, 结果查找发现 iOS 11可以不管 _UIbarBackground 的 alpha, 其本身就是透明色, 改变其 subview 的 alpha 就好了

UIView * barBackground = self.navigationController.navigationBar.subviews.firstObject;
if (@available(iOS 11.0, *)) {
   [barBackground.subviews setValue:@(0) forKeyPath:@"alpha"];
} else {
   barBackground.alpha = 0;
}

0x02 数组语法糖问题

  • 事件: 在 iOS 11之前的语法糖取值实际上执行的方法是: objectAtIndex, 然而在 iOS 11执行的是 objectAtIndexedSubscript 方法:

    如图对比

  • 起因: 这套代码中做了很多数组越界等处理, 非常不错, 很多地方可以很安逸的使用, 但是 mmp 的 iOS 11不行了, 有人说是 Xcode 9 的问题, 不管是谁的问题...

    Runtime 处理异常

  • 经过: 百度查了一堆 "废话", 同样的 keyword 在 Google 上就是不一样😂

    百度结果

    Google 结果

  • 结果: 通过版本判断一下进行更换的方法, 天知道 iOS 12 抑或 Xcode 10 或不会在有什么改变呢😂


2018年03月30日 由于 HOOK 出现莫名的 crash

// 错误信息
-[UIKeyboardLayoutStar release]: message sent to deallocated instance 0x1489ab450
// crash 场景, 使用 Runtime 处理异常, 所有用到键盘的地方, 使用键盘后, 在用 home 键进入后台, 就是报这个错误, 控制台是有的

这个错误是因为使用了 HOOK 导致 ARC 大姨妈了, 所以需要将使用到的 Runtime 处理异常代码文件用 -fno-objc-arc 标记起来, 这样就不会 crash 了

还有标记后, build 可能报下面这个错误:

// 我这里是 RAC 的几个文件出现的错误, 解决办法如下
Cannot create __weak reference in file using manual reference counting
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • KD-Tree 随机生成一些数据点 0. KNN 举手表决,选择得到票数最多的类别 1.k-Dimension t...
    Plenari阅读 352评论 1 4
  • 昨天我和一个老师吵架了辩解,我还当众哭,哭的像个死了丈夫没处说理的泼妇,胳膊摊在桌子上话都说不完整。我一直...
    沈嵬阅读 325评论 0 0
  • 具体
    柰楠阅读 174评论 0 0