title: Confusion about ARC , AutoRelease
body: <p>I am new to IOS development and I have started to learn objective c to program towards IOS 7. and as I know, it is way easier to code now than it has been before because of the Automatic reference counting.
  there are a couple of things I do not understand . in MAIN method we have the autoreleasepool block, so my first question is that in order to enable ARC , the code has to be inside this block? if no, then what is the difference between the code that is inside autoreleasepool and the rest those aren't?</p>
  
  <p>my second question is that when I am writing my IPHONE programs , I have bunch of classes and non of those codes are inside "autoreleasepool" , only the code inside the MAIN method.</p>
  
  <pre><code> int main(int argc, char * argv[])
   {
       @autoreleasepool {
      return UIApplicationMain(argc, argv, nil, 
      NSStringFromClass([HomepwnerAppDelegate class]));
   }
  }
  </code></pre>
  
  <p>so , does this mean that this block somehow magically gets applied to all lines of code inside any other classes of the same program?</p>
  
  <p>My last question is that whether with ARC or without it, if we had a declared pointer variable inside a method, does the object gets released/destroyed when the method returns/exit?</p>
  
  <p>assume we have a method like this :</p>
  
  <pre><code>- (void)doSomething {
   NSMutableArray *allItems = [[NSMutableArray alloc] init];
   NSString *myString = @"sample string";
   [allItems addObject:myString]
   }
  </code></pre>
  
  <p>then when we call this method and it exits, what would happen to those local variables defined inside the method ?  is there any difference in the outcome if we are using ARC or not ? (Object are still in the memory or not)</p>