iOS: Eliminate strong retain loop in Scenario tests (flutter/engine#56249)

`FlutterViewControllerTest testDrawLayer` created a callback which strongly referenced itself in its own body as part of an asynchronous recursive loop. The recursion was unnecessary and the test consistently passes, even if run on repeat > 100 times without it.

Now that there's only one call, eliminates the unnecessary local and inlines it into the `dispatch_after` call.

This was originally introduced in https://github.com/flutter/engine/pull/50072.

[C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
This commit is contained in:
Chris Bracken 2024-10-30 17:37:26 -07:00 committed by GitHub
parent 2bc2d9e328
commit a4bb83e6e8

View File

@ -91,9 +91,7 @@ FLUTTER_ASSERT_ARC
[rootVC presentViewController:self.flutterViewController animated:NO completion:nil]; [rootVC presentViewController:self.flutterViewController animated:NO completion:nil];
CGColorSpaceRef color_space = CGColorSpaceCreateDeviceRGB(); CGColorSpaceRef color_space = CGColorSpaceCreateDeviceRGB();
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, NSEC_PER_SEC), dispatch_get_main_queue(), ^{
__block dispatch_block_t callback;
callback = ^{
size_t width = 300u; size_t width = 300u;
CGContextRef context = CGContextRef context =
CGBitmapContextCreate(nil, width, width, 8, 4 * width, color_space, CGBitmapContextCreate(nil, width, width, 8, 4 * width, color_space,
@ -104,14 +102,8 @@ FLUTTER_ASSERT_ARC
[imageRendered fulfill]; [imageRendered fulfill];
return; return;
} }
CGContextRelease(context); CGContextRelease(context);
});
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, NSEC_PER_SEC), dispatch_get_main_queue(),
callback);
};
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, NSEC_PER_SEC), dispatch_get_main_queue(),
callback);
[self waitForExpectationsWithTimeout:30.0 handler:nil]; [self waitForExpectationsWithTimeout:30.0 handler:nil];