LookinServer
LookinServer copied to clipboard
野指针crash
UIView+LookinServer.m
- (NSArray<LookinAutoLayoutConstraint *> *)lks_constraints {
...
LookinConstraintItemType firstItemType = [self _lks_constraintItemTypeForItem:constraint.firstItem];
LookinConstraintItemType secondItemType = [self _lks_constraintItemTypeForItem:constraint.secondItem];
...
}
这里使用的firstItem secondItem 在 NSLayoutConstraint 用的assign修饰的,不安全属性,真机调试的时候会产生野指针错误。
尝试对constraint.active做了一下判断,非激活态就过就将约束滤掉,观察了一段时间不在crash,目前没有发现副作用,不知道可不可以这样修复一下。
NSArray<LookinAutoLayoutConstraint *> *lookinConstraints = [self.lks_involvedRawConstraints lookin_map:^id(NSUInteger idx, __kindof NSLayoutConstraint *constraint) {
BOOL isEffective = [effectiveConstraints containsObject:constraint];
if ([constraint isActive]) {
LookinConstraintItemType firstItemType = [self _lks_constraintItemTypeForItem:constraint.firstItem];
LookinConstraintItemType secondItemType = [self _lks_constraintItemTypeForItem:constraint.secondItem];
LookinAutoLayoutConstraint *lookinConstraint = [LookinAutoLayoutConstraint instanceFromNSConstraint:constraint isEffective:isEffective firstItemType:firstItemType secondItemType:secondItemType];
return lookinConstraint;
}
return nil;
}];