@@ -251,13 +251,38 @@ - (void)testChildClippingViewHitTests {
251
251
252
252
- (void )testReleasesBackdropFilterSubviewsOnChildClippingViewDealloc {
253
253
__weak NSMutableArray <UIVisualEffectView*>* weakBackdropFilterSubviews = nil ;
254
+ __weak UIVisualEffectView* weakVisualEffectView1 = nil ;
255
+ __weak UIVisualEffectView* weakVisualEffectView2 = nil ;
256
+
254
257
@autoreleasepool {
255
- ChildClippingView* clipping_view = [[ChildClippingView alloc ] initWithFrame: CGRectZero];
256
- weakBackdropFilterSubviews = clipping_view.backdropFilterSubviews ;
258
+ ChildClippingView* clippingView = [[ChildClippingView alloc ] initWithFrame: CGRectZero];
259
+ UIVisualEffectView* visualEffectView1 = [[UIVisualEffectView alloc ]
260
+ initWithEffect: [UIBlurEffect effectWithStyle: UIBlurEffectStyleLight]];
261
+ weakVisualEffectView1 = visualEffectView1;
262
+ PlatformViewFilter* platformViewFilter1 =
263
+ [[PlatformViewFilter alloc ] initWithFrame: CGRectMake (0 , 0 , 10 , 10 )
264
+ blurRadius: 5
265
+ visualEffectView: visualEffectView1];
266
+
267
+ [clippingView applyBlurBackdropFilters: @[ platformViewFilter1 ]];
268
+
269
+ // Replace the blur filter to validate the original and new UIVisualEffectView are released.
270
+ UIVisualEffectView* visualEffectView2 = [[UIVisualEffectView alloc ]
271
+ initWithEffect: [UIBlurEffect effectWithStyle: UIBlurEffectStyleDark]];
272
+ weakVisualEffectView2 = visualEffectView2;
273
+ PlatformViewFilter* platformViewFilter2 =
274
+ [[PlatformViewFilter alloc ] initWithFrame: CGRectMake (0 , 0 , 10 , 10 )
275
+ blurRadius: 5
276
+ visualEffectView: visualEffectView2];
277
+ [clippingView applyBlurBackdropFilters: @[ platformViewFilter2 ]];
278
+
279
+ weakBackdropFilterSubviews = clippingView.backdropFilterSubviews ;
257
280
XCTAssertNotNil (weakBackdropFilterSubviews);
258
- clipping_view = nil ;
281
+ clippingView = nil ;
259
282
}
260
283
XCTAssertNil (weakBackdropFilterSubviews);
284
+ XCTAssertNil (weakVisualEffectView1);
285
+ XCTAssertNil (weakVisualEffectView2);
261
286
}
262
287
263
288
- (void )testApplyBackdropFilter {
@@ -595,6 +620,7 @@ - (void)testAddBackdropFilters {
595
620
XCTAssertEqual (originalView, newView);
596
621
id mockOrignalView = OCMPartialMock (originalView);
597
622
OCMReject ([mockOrignalView removeFromSuperview ]);
623
+ [mockOrignalView stopMocking ];
598
624
}
599
625
}
600
626
@@ -1302,20 +1328,26 @@ - (void)testApplyBackdropFilterAPIChangedInvalidInputRadius {
1302
1328
}
1303
1329
1304
1330
- (void )testBackdropFilterVisualEffectSubviewBackgroundColor {
1305
- UIVisualEffectView* visualEffectView = [[UIVisualEffectView alloc ]
1306
- initWithEffect: [UIBlurEffect effectWithStyle: UIBlurEffectStyleLight]];
1307
- PlatformViewFilter* platformViewFilter =
1308
- [[PlatformViewFilter alloc ] initWithFrame: CGRectMake (0 , 0 , 10 , 10 )
1309
- blurRadius: 5
1310
- visualEffectView: visualEffectView];
1311
- CGColorRef visualEffectSubviewBackgroundColor = nil ;
1312
- for (UIView* view in [platformViewFilter backdropFilterView ].subviews ) {
1313
- if ([NSStringFromClass ([view class ]) hasSuffix: @" VisualEffectSubview" ]) {
1314
- visualEffectSubviewBackgroundColor = view.layer .backgroundColor ;
1331
+ __weak UIVisualEffectView* weakVisualEffectView;
1332
+
1333
+ @autoreleasepool {
1334
+ UIVisualEffectView* visualEffectView = [[UIVisualEffectView alloc ]
1335
+ initWithEffect: [UIBlurEffect effectWithStyle: UIBlurEffectStyleLight]];
1336
+ weakVisualEffectView = visualEffectView;
1337
+ PlatformViewFilter* platformViewFilter =
1338
+ [[PlatformViewFilter alloc ] initWithFrame: CGRectMake (0 , 0 , 10 , 10 )
1339
+ blurRadius: 5
1340
+ visualEffectView: visualEffectView];
1341
+ CGColorRef visualEffectSubviewBackgroundColor = nil ;
1342
+ for (UIView* view in [platformViewFilter backdropFilterView ].subviews ) {
1343
+ if ([NSStringFromClass ([view class ]) hasSuffix: @" VisualEffectSubview" ]) {
1344
+ visualEffectSubviewBackgroundColor = view.layer .backgroundColor ;
1345
+ }
1315
1346
}
1347
+ XCTAssertTrue (
1348
+ CGColorEqualToColor (visualEffectSubviewBackgroundColor, UIColor.clearColor .CGColor ));
1316
1349
}
1317
- XCTAssertTrue (
1318
- CGColorEqualToColor (visualEffectSubviewBackgroundColor, UIColor.clearColor .CGColor ));
1350
+ XCTAssertNil (weakVisualEffectView);
1319
1351
}
1320
1352
1321
1353
- (void )testCompositePlatformView {
0 commit comments