iOS: fix List Crash when insert more rows

This commit is contained in:
pengfei.zhou 2023-04-03 14:18:37 +08:00 committed by jingpeng
parent e345aa8879
commit 1add0f564c
2 changed files with 10 additions and 10 deletions

View File

@ -26,7 +26,7 @@
#import <yoga/Yoga.h> #import <yoga/Yoga.h>
@interface YGLayout () @interface YGLayout ()
@property (nonatomic, assign, readonly) YGNodeRef node; @property(nonatomic, assign, readonly) YGNodeRef node;
@end @end
void DoricAddEllipticArcPath(CGMutablePathRef path, void DoricAddEllipticArcPath(CGMutablePathRef path,
@ -1537,9 +1537,9 @@ - (void)layoutFlex {
layout.measuredX = YGNodeLayoutGetLeft(child.yoga.node); layout.measuredX = YGNodeLayoutGetLeft(child.yoga.node);
layout.measuredY = YGNodeLayoutGetTop(child.yoga.node); layout.measuredY = YGNodeLayoutGetTop(child.yoga.node);
[layout measureWidth:DoricMeasureSpecMake(DoricMeasureExactly, [layout measureWidth:DoricMeasureSpecMake(DoricMeasureExactly,
YGNodeLayoutGetWidth(child.yoga.node)) YGNodeLayoutGetWidth(child.yoga.node))
height:DoricMeasureSpecMake(DoricMeasureExactly, height:DoricMeasureSpecMake(DoricMeasureExactly,
YGNodeLayoutGetHeight(child.yoga.node))]; YGNodeLayoutGetHeight(child.yoga.node))];
[layout layout]; [layout layout];
} }
} }

View File

@ -231,10 +231,10 @@ - (void)blend:(NSDictionary *)props {
NSIndexPath *p = [NSIndexPath indexPathForRow:l inSection:0]; NSIndexPath *p = [NSIndexPath indexPathForRow:l inSection:0];
[indexPaths addObject:p]; [indexPaths addObject:p];
} }
if (@available(iOS 11.0, *)) { if (@available(iOS 11.0, *)) {
[self.view performBatchUpdates:^{ @try {
@try { [self.view performBatchUpdates:^{
if (oldLoadMore != self.loadMore) { if (oldLoadMore != self.loadMore) {
if (self.loadMore) { if (self.loadMore) {
[self.view insertRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationNone]; [self.view insertRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationNone];
@ -246,10 +246,10 @@ - (void)blend:(NSDictionary *)props {
} else { } else {
[self.view insertRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationNone]; [self.view insertRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationNone];
} }
} @catch (NSException *exception) { } completion:nil];
[self.view reloadData]; } @catch (NSException *exception) {
} [self.view reloadData];
} completion:nil]; }
} else { } else {
[self.view reloadData]; [self.view reloadData];
} }