title: Different among __weak, __block and __assign?
body: <p>1) Wikipedia said: "The difference between weak (_<em>weak) and assign (</em>_assign) is that when the object the variable pointed to is being deallocated, whether the value of the variable is going to be changed or not. weak ones will be updated to nil and the assign one will be left unchanged, as a dangling pointer."</p>
  
  <p>But after I tried a sample in Xcode like this</p>
  
  <pre><code>__weak NSObject *obj1 = [[NSObject alloc] init];
  [obj1 release];
  </code></pre>
  
  <p>If Wiki's right, the address obj1 pointed to must be <code>nill</code>  after release. But the address obj1 pointed to is still <code>0xabcdef...</code>
  Wiki's wrong ?</p>
  
  <p>2) Help me distinguish <code>__weak, __block, __assign</code> ?</p>