Assertion failure in -[UIView layoutSublayersOfLayer:]

来源:互联网 发布:俄罗斯进出口贸易数据 编辑:程序博客网 时间:2024/05/13 17:52

我的工程在添加新版MJRefresh的时候,手机突然就报了这个错,当初还以为自己手机越狱后快报废了,而且XCode报错也不准备了,以为XCode坏了,都准备重装了.后来仔细一想,或许是iOS7上面的问题,在iOS8上的机型并没有报错,后来就开始在网上搜,在一个论坛里看到这样的描述,添加如下代码到报错的.m文件中.

+ (void)load
{
Method existing = class_getInstanceMethod(self, @selector(layoutSubviews));
Method new = class_getInstanceMethod(self, @selector(_autolayout_replacementLayoutSubviews));

method_exchangeImplementations(existing, new);
}

- (void)_autolayout_replacementLayoutSubviews
{
[super layoutSubviews];
[self _autolayout_replacementLayoutSubviews]; // not recursive due to method swizzling
[super layoutSubviews];
}

这个是利用运行时机制,在此layoutSubviews函数运行的时候替换成_autolayout_replacementLayoutSubviews.避免了直接调用layoutSubviews报错.很机智的做法,成功解决BUG.

0 0
原创粉丝点击