title: copyWithZone: (deep copy) crash in subclass
body: <p>I try to create a copying method confering to the protocol NSCopying.</p>
  
  <p>I have the following class:</p>
  
  <pre><code>@interface Gene : NSObject &lt;NSCopying&gt;
  {
  
      int firstAllele;
      int secondAllele;
  
  }
  </code></pre>
  
  <p>with the method:</p>
  
  <pre><code>-(id) copyWithZone:(NSZone*) zone
  {
      id clonedGene = [[[self class] allocWithZone:zone] initWithAllele1:first andAllele2:second];
  
      return clonedGene;
  }
  </code></pre>
  
  <p>if I call the method the following way:</p>
  
  <pre><code>Gene* gene1 = [[Gene alloc]initWithAllele1:4 andAllele2:2];
  Gene* gene2 = [gene1 copy];
  </code></pre>
  
  <p>it crashes while calling the copy method of gene1.</p>
  
  <p>do I have to call the method differently?</p>
  
  <p>like <code>[gene1 copyWithZone:(NSZone *)]</code> but what object will I have to pass? do I have to create an NSZone object? or is there a default one I can pass as argument?</p>
  
  <p>Thank you for any help</p>