The first example’s remedy seems to be wrong.<p>I am not aware of any reason to test for &quot;nil&quot; in Objective-C, as that remedy suggests.  Sending the &quot;doSomething&quot; message to &quot;nil&quot; should do nothing.<p>If SIGSEGV does occur for an object, it is probably for the exact opposite reason: you have a pointer that is NOT &quot;nil&quot; but it refers to something that has been freed.  (Or, the SIGSEGV is not related to objects at all, and is caused by some other access such as plain C code.)