title: Create a new instance with same name through looping
body: <p>As novice to Objective C, I cannot really understand why this is ok:</p>
  
  <pre><code>@autoreleasepool {
      for (int i = 0; i&lt;10; i++) {
          NSNumber *newNumber = [[NSNumber alloc] initWithInt:(i)];
          NSLog(@"New number = %@", newNumber);
      }
  }
  return 0;
  </code></pre>
  
  <p>But not this:</p>
  
  <pre><code>@autoreleasepool {
      NSNumber *newNumber = [[NSNumber alloc] initWithInt:(0)];
      NSLog(@"New number = %@", newNumber);
  
      NSNumber *newNumber = [[NSNumber alloc] initWithInt:(1)];
      NSLog(@"New number = %@", newNumber);
  }
  return 0;
  </code></pre>
  
  <p>In both cases, I do redefine *newNumber (?) Why is it different?</p>