LookinServer icon indicating copy to clipboard operation
LookinServer copied to clipboard

野指针crash

Open liulei6415 opened this issue 3 years ago • 0 comments

UIView+LookinServer.m
- (NSArray<LookinAutoLayoutConstraint *> *)lks_constraints {
...
LookinConstraintItemType firstItemType = [self _lks_constraintItemTypeForItem:constraint.firstItem];
LookinConstraintItemType secondItemType = [self _lks_constraintItemTypeForItem:constraint.secondItem];
...
}

这里使用的firstItem secondItemNSLayoutConstraint 用的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;
    }];

liulei6415 avatar Mar 23 '22 13:03 liulei6415