There's still the issue I describe above, though.

Here's a thought - instead of checking if a class is a RAC dynamically generated subclass by looking at the name, an associated object could be added to the class. That way the issue I describe above doesn't exist.

Furthermore, an associated object could be set on the object when its class is first swizzled, pointing to the RAC generated subclass. Then in the signalForSelector, KVO, signalForSelector case, we can just pull out the RAC generated subclass from the associated object on the second signalForSelector, and add the magic there.

Did that make any sense?