SendMessage or store reference and call directly?

If an object may or may not have a certain component, is it best to attempt to store a reference to it, or simply use SendMessage without requiring a receiver?

"Best" sounds like a subject for the forum, but here's my take:

The best thing to do is to not do things to other objects directly. The best thing to do is to have those other objects listen for events, and check for null before firing those events. (The check for null isn't necessary if you are certain that something is going to be listening for the event, but that doesn't sound like a description of your situation.)