From 4b40c6d265a330b5fa18c72be704ea2599cffeba Mon Sep 17 00:00:00 2001 From: Chris Baltzer Date: Fri, 25 Mar 2022 15:27:24 -0300 Subject: [PATCH 1/2] Adds conformsToProtocol forwarding to MPAppDelegateProxy --- mParticle-Apple-SDK/AppNotifications/MPAppDelegateProxy.m | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mParticle-Apple-SDK/AppNotifications/MPAppDelegateProxy.m b/mParticle-Apple-SDK/AppNotifications/MPAppDelegateProxy.m index 27b8a9b1..379eef0b 100644 --- a/mParticle-Apple-SDK/AppNotifications/MPAppDelegateProxy.m +++ b/mParticle-Apple-SDK/AppNotifications/MPAppDelegateProxy.m @@ -87,6 +87,10 @@ - (BOOL)respondsToSelector:(SEL)aSelector { return respondsToSelector; } +- (BOOL)conformsToProtocol:(Protocol *)aProtocol { + return [_originalAppDelegate conformsToProtocol:aProtocol] || [self.surrogateAppDelegate conformsToProtocol:aProtocol]; +} + #pragma mark Public accessors - (MPSurrogateAppDelegate *)surrogateAppDelegate { if (_surrogateAppDelegate) { From 471d5ecc989aea3551e65a1107984279e7abbeb9 Mon Sep 17 00:00:00 2001 From: Chris Baltzer Date: Mon, 4 Apr 2022 11:43:54 -0300 Subject: [PATCH 2/2] Class method implementation --- .../AppNotifications/MPAppDelegateProxy.m | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/mParticle-Apple-SDK/AppNotifications/MPAppDelegateProxy.m b/mParticle-Apple-SDK/AppNotifications/MPAppDelegateProxy.m index 379eef0b..df297d6f 100644 --- a/mParticle-Apple-SDK/AppNotifications/MPAppDelegateProxy.m +++ b/mParticle-Apple-SDK/AppNotifications/MPAppDelegateProxy.m @@ -13,9 +13,18 @@ @interface MPAppDelegateProxy() { @implementation MPAppDelegateProxy +static MPAppDelegateProxy* _defaultProxy = nil; ++ (MPAppDelegateProxy *)defaultProxy { + return _defaultProxy; +} + - (instancetype)initWithOriginalAppDelegate:(id)originalAppDelegate { _originalAppDelegate = originalAppDelegate; originalAppDelegateSelector = @selector(originalAppDelegate); + static dispatch_once_t pred = 0; + dispatch_once(&pred, ^{ + _defaultProxy = self; + }); return self; } @@ -87,8 +96,10 @@ - (BOOL)respondsToSelector:(SEL)aSelector { return respondsToSelector; } -- (BOOL)conformsToProtocol:(Protocol *)aProtocol { - return [_originalAppDelegate conformsToProtocol:aProtocol] || [self.surrogateAppDelegate conformsToProtocol:aProtocol]; ++ (BOOL)conformsToProtocol:(Protocol *)aProtocol { + id original = [[MPAppDelegateProxy defaultProxy] originalAppDelegate]; + id surrogate = [[MPAppDelegateProxy defaultProxy] surrogateAppDelegate]; + return [original conformsToProtocol:aProtocol] || [surrogate conformsToProtocol:aProtocol]; } #pragma mark Public accessors