diff --git a/MVMCore/MVMCore/ActionHandling/MVMCoreActionHandler.m b/MVMCore/MVMCore/ActionHandling/MVMCoreActionHandler.m index 4e95c40..0dbc16d 100644 --- a/MVMCore/MVMCore/ActionHandling/MVMCoreActionHandler.m +++ b/MVMCore/MVMCore/ActionHandling/MVMCoreActionHandler.m @@ -36,8 +36,7 @@ NSString * const KeyActionTypeOpen = @"openPage"; @implementation MVMCoreActionHandler + (nullable instancetype)sharedActionHandler { - [MVMCoreActionUtility classIsInstanceTypeOfClass:[MVMCoreObject sharedInstance].actionHandler.class otherClass:self throwException:YES]; - return [MVMCoreObject sharedInstance].actionHandler; + return [MVMCoreActionUtility initializerClassCheck:[MVMCoreObject sharedInstance].actionHandler classToVerify:self]; } - (void)handleActionWithDictionary:(nullable NSDictionary *)dictionary additionalData:(nullable NSDictionary *)additionalData delegate:(nullable NSObject *)delegate { diff --git a/MVMCore/MVMCore/OtherHandlers/MVMCoreCache.m b/MVMCore/MVMCore/OtherHandlers/MVMCoreCache.m index 116c352..68cc85d 100644 --- a/MVMCore/MVMCore/OtherHandlers/MVMCoreCache.m +++ b/MVMCore/MVMCore/OtherHandlers/MVMCoreCache.m @@ -42,8 +42,7 @@ static NSString * const STATIC_CACHE_COMPONENT = @"StaticCache.txt"; + (nullable instancetype)sharedCache { - [MVMCoreActionUtility classIsInstanceTypeOfClass:[MVMCoreObject sharedInstance].cache.class otherClass:self throwException:YES]; - return [MVMCoreObject sharedInstance].cache; + return [MVMCoreActionUtility initializerClassCheck:[MVMCoreObject sharedInstance].cache classToVerify:self]; } - (nullable instancetype)init { diff --git a/MVMCore/MVMCore/OtherHandlers/MVMCoreLoggingHandler.m b/MVMCore/MVMCore/OtherHandlers/MVMCoreLoggingHandler.m index 82ad77a..b96127e 100644 --- a/MVMCore/MVMCore/OtherHandlers/MVMCoreLoggingHandler.m +++ b/MVMCore/MVMCore/OtherHandlers/MVMCoreLoggingHandler.m @@ -13,7 +13,7 @@ @implementation MVMCoreLoggingHandler + (nullable instancetype)sharedLoggingHandler { - if ([MVMCoreActionUtility classIsInstanceTypeOfClass:[MVMCoreObject sharedInstance].loggingDelegate.class otherClass:self throwException:NO]) { + if ([MVMCoreObject sharedInstance].loggingDelegate && [MVMCoreActionUtility classIsInstanceTypeOfClass:[MVMCoreObject sharedInstance].loggingDelegate.class otherClass:self throwException:NO]) { return (MVMCoreLoggingHandler *)[MVMCoreObject sharedInstance].loggingDelegate; } else { return nil; diff --git a/MVMCore/MVMCore/Session/MVMCoreSessionObject.m b/MVMCore/MVMCore/Session/MVMCoreSessionObject.m index 5deb1e4..484eb37 100644 --- a/MVMCore/MVMCore/Session/MVMCoreSessionObject.m +++ b/MVMCore/MVMCore/Session/MVMCoreSessionObject.m @@ -13,8 +13,7 @@ @implementation MVMCoreSessionObject + (nullable instancetype)sharedGlobal { - [MVMCoreActionUtility classIsInstanceTypeOfClass:[MVMCoreObject sharedInstance].session.class otherClass:self throwException:YES]; - return [MVMCoreObject sharedInstance].session; + return [MVMCoreActionUtility initializerClassCheck:[MVMCoreObject sharedInstance].session classToVerify:self]; } - (nullable NSDictionary *)getInitialParameters { diff --git a/MVMCore/MVMCore/Session/MVMCoreSessionTimeHandler.m b/MVMCore/MVMCore/Session/MVMCoreSessionTimeHandler.m index a18113f..fad63f3 100644 --- a/MVMCore/MVMCore/Session/MVMCoreSessionTimeHandler.m +++ b/MVMCore/MVMCore/Session/MVMCoreSessionTimeHandler.m @@ -47,8 +47,7 @@ @implementation MVMCoreSessionTimeHandler + (nullable instancetype)sharedSessionHandler { - [MVMCoreActionUtility classIsInstanceTypeOfClass:[MVMCoreObject sharedInstance].sessionHandler.class otherClass:self throwException:YES]; - return [MVMCoreObject sharedInstance].sessionHandler; + return [MVMCoreActionUtility initializerClassCheck:[MVMCoreObject sharedInstance].sessionHandler classToVerify:self]; } - (instancetype)init { diff --git a/MVMCore/MVMCore/Utility/Helpers/MVMCoreActionUtility.h b/MVMCore/MVMCore/Utility/Helpers/MVMCoreActionUtility.h index 76f1d8e..6e7f4ef 100644 --- a/MVMCore/MVMCore/Utility/Helpers/MVMCoreActionUtility.h +++ b/MVMCore/MVMCore/Utility/Helpers/MVMCoreActionUtility.h @@ -26,4 +26,7 @@ // returns if the class is not the same or a subclass of the other class. Can pass throw an exception as well + (BOOL)classIsInstanceTypeOfClass:(Class)theClass otherClass:(Class)otherClass throwException:(BOOL)throwException; +// Calls the above function with throw exception yes if the object is not nil. Returns the object. Convenience function for one liner in initializer. ++ (id)initializerClassCheck:(nullable NSObject *)object classToVerify:(Class)classToVerify; + @end diff --git a/MVMCore/MVMCore/Utility/Helpers/MVMCoreActionUtility.m b/MVMCore/MVMCore/Utility/Helpers/MVMCoreActionUtility.m index f350b6c..8efd24a 100644 --- a/MVMCore/MVMCore/Utility/Helpers/MVMCoreActionUtility.m +++ b/MVMCore/MVMCore/Utility/Helpers/MVMCoreActionUtility.m @@ -147,4 +147,11 @@ return YES; } ++ (id)initializerClassCheck:(nullable NSObject *)object classToVerify:(Class)classToVerify { + if (object) { + [self classIsInstanceTypeOfClass:object.class otherClass:classToVerify throwException:YES]; + } + return object; +} + @end diff --git a/MVMCore/MVMCore/ViewControllerMapping/MVMCoreViewControllerMappingObject.m b/MVMCore/MVMCore/ViewControllerMapping/MVMCoreViewControllerMappingObject.m index d39193e..99fc136 100644 --- a/MVMCore/MVMCore/ViewControllerMapping/MVMCoreViewControllerMappingObject.m +++ b/MVMCore/MVMCore/ViewControllerMapping/MVMCoreViewControllerMappingObject.m @@ -27,8 +27,7 @@ @implementation MVMCoreViewControllerMappingObject + (nullable instancetype)sharedViewControllerMappingObject { - [MVMCoreActionUtility classIsInstanceTypeOfClass:[MVMCoreObject sharedInstance].viewControllerMapping.class otherClass:self throwException:YES]; - return [MVMCoreObject sharedInstance].viewControllerMapping; + return [MVMCoreActionUtility initializerClassCheck:[MVMCoreObject sharedInstance].viewControllerMapping classToVerify:self]; } #pragma mark - View Controller Mapping