I would rework what you're doing and not use class methods. Instead, use a shared instance singleton, which will allow you to write your code almost identically but gives you an instance to work with and therefore store variables and assign delegates.
Just in case you are unfamiliar with the syntax:
+ (instancetype) shared
{
static dispatch_once_t once;
static id sharedInstance;
dispatch_once(&once, ^{
sharedInstance = [[self alloc] init];
});
return sharedInstance;
}
Then just change all of your +
(class) methods to be -
(instance) methods and access your class with [[MyClass shared] doWhatever];
edit with optional wrapper:
If you really wanna call the method without an instance you can write a wrapper that would do something like this:
+ (void) doWhatever
{
[[self shared] doWhatever];
}
That said I would generally not recommend doing this because you are not saving much code and adding possible confusion in the future as to what kind of method this actually is from the caller's perspective.