pivotal/cedar — pull request #168 by jeffh (2014-01-15 09:07:51+00:00)
Title: CDRSpies will give up spying on internal methods after seeing the same method names being called recursively

See #153.

NSTimer internally checks for its class and calls either -[fireDate] or __cffiredate. This either means that NSTimer is class cluster or some NSTimer-specific object_getClass() checks that make sure the class is correct. If not, they seem to invoke the other method. Those two methods recursively trampoline until a stack overflow occurs.

Alternatively, we can choose to not to special-case this scenario and treat NSTimers as un-spyable.