坑逼的 iOS 11数组语法糖

作者: 游城十代2dai | 来源:发表于2018-01-22 18:02 被阅读80次

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

相关文章

  • 坑逼的 iOS 11数组语法糖

    0x00 题记 最近老板买了一套直播代码, 在运行 iOS 端的时候一堆问题, 主要是因为 iOS 11的, 有一...

  • swift数组和字典区分

    数组 语法糖为 [type],假代码为[类型],简单理解[]就是数组。例如:数组中的元素类型为字符串类型的语法糖写...

  • 2020-01-23

    绑定属性: *v-bind:动态绑定属性 语法糖:“:” 对象语法,数组语法

  • 适配iOS11&iPhoneX的一些坑

    适配iOS11&iPhoneX的一些坑 适配iOS11&iPhoneX的一些坑

  • iOS 语法糖

    转载作者 香蕉大大 (Github) 福利:工作经常用到的Mac软件整理 开发过程中我特别喜欢用语法糖,原因很简单...

  • 数组 方法

    一.什么是数组 就是一组数组,它是一个特殊对象类型 !!!判断是否为真数组 二.数组的创建方式 1.语法糖(数组的...

  • iOS 开发Tips

    iOS 两行终端命令计算代码量 语法糖 字面量语法@1@[@"1", @"2"]@{@"key": @"value...

  • Dart的一些语法糖(持续更新)

    语法糖 ?. 与 ?? dart 语法糖 ?. dart 语法糖 ??

  • Swift语法糖的使用

    Swift语法糖的使用 语法糖的简介 语法糖Selector例子 语法糖的简介 我个人对语法糖的理解就是让你的代码...

  • iOS效率_语法糖

    https://www.jianshu.com/p/3f7b3c2d9ef3 糖衣语法指计算机语言中添加的某种语法...

网友评论

    本文标题:坑逼的 iOS 11数组语法糖

    本文链接:https://www.haomeiwen.com/subject/epqraxtx.html