Skip to content

Commit 8e649fc

Browse files
committed
Preallocate array
1 parent f5217d4 commit 8e649fc

1 file changed

Lines changed: 10 additions & 5 deletions

File tree

ios/gamma/modals/form-sheet/RNSFormSheetHostComponentView.mm

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -244,8 +244,6 @@ - (void)updateConfiguration
244244

245245
- (NSArray<UISheetPresentationControllerDetent *> *)buildSheetDetents
246246
{
247-
NSMutableArray<UISheetPresentationControllerDetent *> *nativeDetents = [NSMutableArray new];
248-
249247
if (![self areDetentsValid]) {
250248
RCTLogError(
251249
@"[RNScreens] The values in the detents array must fall within the 0.0 to 1.0 range. Falling back to large detent.");
@@ -260,11 +258,18 @@ - (void)updateConfiguration
260258
return @[ [UISheetPresentationControllerDetent largeDetent] ];
261259
}
262260

261+
size_t detentsCount = _detents.size();
262+
// Falling back to 2, specifically for iOS 15 fallback
263+
NSUInteger capacity = detentsCount > 0 ? detentsCount : 2;
264+
265+
NSMutableArray<UISheetPresentationControllerDetent *> *nativeDetents =
266+
[[NSMutableArray alloc] initWithCapacity:capacity];
267+
263268
if (@available(iOS 16.0, *)) {
264-
if (_detents.size() == 0) {
269+
if (detentsCount == 0) {
265270
[nativeDetents addObject:[UISheetPresentationControllerDetent largeDetent]];
266271
} else {
267-
for (size_t i = 0; i < _detents.size(); i++) {
272+
for (size_t i = 0; i < detentsCount; i++) {
268273
double fraction = _detents[i];
269274
NSString *ident = [NSString stringWithFormat:@"%zu", i];
270275

@@ -279,7 +284,7 @@ - (void)updateConfiguration
279284
}
280285
} else {
281286
// iOS 15 Legacy Fallback
282-
if (_detents.size() == 1) {
287+
if (detentsCount == 1) {
283288
double firstDetentFraction = _detents[0];
284289
if (firstDetentFraction < 1.0) {
285290
[nativeDetents addObject:UISheetPresentationControllerDetent.mediumDetent];

0 commit comments

Comments
 (0)