__weak typeof(self) weakSelf = self OR __weak MyObject *weakSelf = self? <p>What is preferable to use here and why?</p> <pre><code>__weak typeof(self) weakSelf = self; </code></pre> <p>or</p> <pre><code>__weak MyObject *weakSelf = self; </code></pre> <p>Obviously, <code>__weak id weakSelf = self;</code> would be the least desirable, as we would not get type checking, is that correct?</p> <p>However, between the first two... which is desirable and why?</p> <p>Also, any reason to use __typeof instead of typeof, if clang supports using typeof?</p>