Plenty is posted here about avoiding retain cycles with blocks, but what about when using classes and class methods? Say I have a class like this:
// MyClass.h
+ (void)doSomethingAsynch:(void (^)(void))block;
+ (void)doSomethingElse;
and callers would like to say this:
[MyClass doSomethingAsynch:^{
[MyClass doSomethingElse];
}
Must the caller declare an unsafe_unretained copy of MyClass? Or is a class like a singleton, which won't increase it's retain count? Does it matter if we send a class's retain count to the moon since we want it to exist all the time anyway?