昨天早上的时候同事说我提交的代码有问题,本来挺纳闷的,因为我每一次提交代码一定是在测试机上跑过很多次才会提交,应不会出现什么问题才对,当然我也不敢说绝对,因为:
是的,那天修改的控制器里面有8000多行代码!!!!
没办法检查了几遍,发现确实没有什么问题,用测试机跑几遍也没问题,但是拿到同事的测试机跑发现确实会崩溃,这才发现是iOS版本的问题.
我自己的测试机的版本是iOS9.3,同事的测试机版本是10.11,用10.0以上的版本跑会报下面这个错误:
"Trapped uncaught exception 'NSInternalInconsistencyException', reason: 'View has lost track of its superview, most likely through unsupported use of CALayer API on the view's layer. If this isn't a crash yet, it will be in the near future. "
这个错误我一开始以为是子控件失焦导致的,但是很快就排除了这个问题,在检查代码的时候发现并没有出现这个情况.
再然后我想起来我昨天添加的代码,我用到了一个addSublayer方法,这样:
然后就出现了上面的错误,随后我也查看了苹果的官网文档,并没有说这个方法已经在iOS10被弃用的说明,只能说认栽,我认为这个是苹果的一个疏漏.
最后的解决方案也很简单,就是直接添加view,在以后的开发中,对layer层的操作也尽量避免.