title: Designated Initializer
body: <pre><code>-(id)initWithStrAndDate: (NSString *)inString date:(NSDate *)inDate
  {
    if (self = [super init])
    {
      [self setStr:inString];
      [self setDate:inDate];
    }
    return self;
  }
  
  -(id)initWithStr: (NSString *)inString
  {
        return [self initWithStrAndDate:inString date:[NSDate date]];
  }
  
  -(id)init
  {
    return [self initWithStr:nil];
  </code></pre>
  <p>I am not sure that I know how to use the &quot;designated initializer&quot;. First of all isn't</p>
  <pre><code>return [self initWithStrAndDate:inString date:[NSDate date]];
  </code></pre>
  <p>this wrong? Shouldn't this be:</p>
  <pre><code>return [self initWithStrAndDate:inString date:nil];
  </code></pre>
  <p>And also why do we use 3 different initializers? I mean when do we use &quot;-(id)init&quot; or &quot;-(id)initWithStr: (NSString *)inString&quot; or the first one?</p>