diff --git a/AsyncDisplayKit/ASNavigationController.m b/AsyncDisplayKit/ASNavigationController.m index 2135c8bf59..6b0c3b140b 100644 --- a/AsyncDisplayKit/ASNavigationController.m +++ b/AsyncDisplayKit/ASNavigationController.m @@ -20,6 +20,8 @@ ASVisibilityViewWillAppear; ASVisibilityViewDidDisappearImplementation; +ASVisibilitySetVisibilityDepth; + ASVisibilityDepthImplementation; - (void)visibilityDepthDidChange diff --git a/AsyncDisplayKit/ASTabBarController.m b/AsyncDisplayKit/ASTabBarController.m index ff06182e90..28150f0945 100644 --- a/AsyncDisplayKit/ASTabBarController.m +++ b/AsyncDisplayKit/ASTabBarController.m @@ -20,6 +20,8 @@ ASVisibilityViewWillAppear; ASVisibilityViewDidDisappearImplementation; +ASVisibilitySetVisibilityDepth; + ASVisibilityDepthImplementation; - (void)visibilityDepthDidChange diff --git a/AsyncDisplayKit/ASViewController.mm b/AsyncDisplayKit/ASViewController.mm index a79af042e5..7cb031a11a 100644 --- a/AsyncDisplayKit/ASViewController.mm +++ b/AsyncDisplayKit/ASViewController.mm @@ -95,11 +95,12 @@ ASVisibilityDidMoveToParentViewController; [_node recursivelyFetchData]; if (_parentManagesVisibilityDepth == NO) { - _visibilityDepth = 0; - [self visibilityDepthDidChange]; + [self setVisibilityDepth:0]; } } +ASVisibilitySetVisibilityDepth; + ASVisibilityViewDidDisappearImplementation; ASVisibilityDepthImplementation; diff --git a/AsyncDisplayKit/ASVisibilityProtocols.h b/AsyncDisplayKit/ASVisibilityProtocols.h index 20c5b5b8f8..6301b65f2b 100644 --- a/AsyncDisplayKit/ASVisibilityProtocols.h +++ b/AsyncDisplayKit/ASVisibilityProtocols.h @@ -46,6 +46,16 @@ ASLayoutRangeMode ASLayoutRangeModeForVisibilityDepth(NSUInteger visibilityDepth @end +#define ASVisibilitySetVisibilityDepth \ +- (void)setVisibilityDepth:(NSUInteger)visibilityDepth \ +{ \ + if (_visibilityDepth == visibilityDepth) { \ + return; \ + } \ + _visibilityDepth = visibilityDepth; \ + [self visibilityDepthDidChange]; \ +} + #define ASVisibilityDepthImplementation \ - (NSInteger)visibilityDepth \ { \ @@ -65,8 +75,7 @@ ASLayoutRangeMode ASLayoutRangeModeForVisibilityDepth(NSUInteger visibilityDepth [super viewDidDisappear:animated]; \ \ if (_parentManagesVisibilityDepth == NO) { \ - _visibilityDepth = 1; \ - [self visibilityDepthDidChange]; \ + [self setVisibilityDepth:1]; \ } \ } @@ -76,8 +85,7 @@ ASLayoutRangeMode ASLayoutRangeModeForVisibilityDepth(NSUInteger visibilityDepth [super viewWillAppear:animated]; \ \ if (_parentManagesVisibilityDepth == NO) { \ - _visibilityDepth = 0; \ - [self visibilityDepthDidChange]; \ + [self setVisibilityDepth:0]; \ } \ }