ios - EXC_BAD_ACCESS (SIGILL) 使用自动布局时崩溃?
问题描述
此崩溃仅发生在 iOS 10.2.1 上,其他设备或模拟器都可以。因为我没有iOS 10.2.1的设备或者模拟器,所以没办法复现。
这是崩溃日志(Github 链接)。
我所做的是从服务器和reloadData
通过UITableView
. 崩溃的同时reloadData
。所有操作都在主队列块中。
一些代码UITableViewCell
如下:
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
[self.contentView addSubview:self.avatarImageView];
[self.contentView addSubview:self.messageBackgroundView];
[self.messageBackgroundView addSubview:self.messageTextView];
}
return self;
}
+ (BOOL)requiresConstraintBasedLayout {
return YES;
}
- (void)prepareForReuse {
[super prepareForReuse];
[self.messageBackgroundView mas_remakeConstraints:^(MASConstraintMaker *make) {
}];
}
- (void)updateConstraints {
[self.avatarImageView mas_remakeConstraints:^(MASConstraintMaker *make) {
make.size.mas_equalTo(CGSizeMake(38, 38));
make.top.equalTo(self.contentView.mas_top).offset(9).priorityHigh();
if (self.myself) {
make.trailing.equalTo(self.contentView.mas_trailing).offset(-18);
} else {
make.leading.equalTo(self.contentView.mas_leading).offset(18);
}
}];
[self.messageBackgroundView mas_remakeConstraints:^(MASConstraintMaker *make) {
if (self.myself) {
make.trailing.equalTo(self.avatarImageView.mas_leading).offset(-9);
make.leading.mas_greaterThanOrEqualTo(self.contentView.mas_leading).offset(44);
} else {
make.leading.equalTo(self.avatarImageView.mas_trailing).offset(9);
make.trailing.mas_lessThanOrEqualTo(self.contentView.mas_trailing).offset(-44);
}
make.top.equalTo(self.avatarImageView.mas_top);
make.bottom.equalTo(self.contentView.mas_bottom).offset(-9).priorityHigh();
}];
[self.messageTextView mas_updateConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self.messageBackgroundView).insets(UIEdgeInsetsMake(8, 14, 8, 14));
make.height.equalTo(@(self.textViewHeight));
}];
[super updateConstraints];
}
- (void)setMessage:(GWBaseModel *)message {
_message = message;
// ... update ui, set height for textview
[self setNeedsUpdateConstraints];
}
解决方案
推荐阅读
- uiaccessibility - 手风琴模式和披露模式有什么区别?
- c# - 控制台项目的 Visual Studio 2017 中出现 C# 错误,并且找不到调试选项
- python-3.x - 如何改进我的回合制游戏循环代码
- docker - NGINX proxy_pass 到 RabbitMQ 管理器只能通过移动设备工作
- microsoft-graph-api - 提取 skiptoken 以安全地发出下一个请求
- powershell - 在全屏模式下打开一个 Chrome 进程,然后稍后关闭该进程。
- ios - 解析 XML 并将其附加到结构 - 如何正确访问结构变量?
- wix - WiX在安装目录下嵌套子目录
- python - Python:构造函数集()
- python - 使用 pdfminer.six 从每个 PDF 页面中提取文本