Logging Messages to Nil
Bill Bumgarner shows how to use the private _objc_setNilReceiver() function and -resolveInstanceMethod: to log the first time each selector is sent to nil. I imagine that by uncommenting the print statement in -forwardInvocation: this could be made to work with Objective-C 1.x, but you’d get a log entry for every message sent to nil.
Update: Bumgarner shows how to do the logging using Leopard’s DTrace.
Update 2: How to do it with Instruments.
1 Comment RSS · Twitter
It should "just work" against Tiger as the code was developed based on the information found in the darwin source's for Objective-C.
And, yes, you'll get lots and lots and lots of log output. Turns out that a surprising number of classes rely upon nil-eats-message!
However, it'd be easy to fix by adding a simple hash to the -forwardInvocation: to make it log once per selector. Just remember to do so in a thread safe fashion!