title: objective c classes why return -(id) instead of it's own class
body: <p>I came from a C# background where you initialize a class and then return itself like so</p>
  
  <pre><code>public class MyClass{
    public int Id;
    public string Name;
  }
  
  MyClass classInstance = new MyClass();
  :
  :
  </code></pre>
  
  <p>I know c# is different from objective c, but I'm trying to find a way to easily understand how objective c works to make the transition easier. And figure out best practices too.</p>
  
  <p>Anyway, my question is why doyou have to create a method and return an "id" instead of returning it's own type? Like so:</p>
  
  <pre><code>- (id)initWithID:(NSInteger)id name:(NSString *)name
  {
      self = [self init];
      if (self) {
          self.ID = id;
          self.name = name;
      }
      return self;
  }
  </code></pre>
  
  <p>Thanks for your time</p>