title: Benefits of @implementation Convenience methods
body: <p>I have been looking through sample code provided by Apple and stumbled upon something interesting I've not learned about. In a subclass in the <code>.m</code> file, there are multiple sections declared with <code>@implementation</code>. The last one is the usual <code>@implementation</code> I expect - the class implementation where all the code goes, but above that are a couple short implementations that each define a single method. They are declared in this format: <code>@implementation ClassName (Convenience)</code>. The method defined within is in the same format as other methods, but they are prefixed with <code>aapl_</code>. After each <code>@implementation</code> definition follows <code>@end,</code> of course. The way these methods are called is to create an instance of <code>ClassName</code> then call the method as you would with the standard API: <code>[anInstance aapl_thisInterestingMethod:aParameter];</code></p>
  
  <p>So this appears to be a way to add a method to a class without creating a category, you call it with an instance of the class, and it's only specific to this file. You can use <code>self</code> to refer to the calling argument. </p>
  
  <p>My question are:<br></p>
  
  <ul>
  <li>Is there more to it than that?</li>
  <li>Why is (Convenience) appended to the end?</li>
  <li>Is the <code>aapl_</code> prefix added simply only to indicate this isn't part of the standard API but instead our own method?</li>
  <li>Why is this better than defining a method as you normally would, accepting in the calling argument as a regular argument? For example: <code>[self anInterestingMethod:myInstance
  withParameter:aParameter];</code></li>
  <li>What are these types of methods/implementations called and what else should I know about them?</li>
  </ul>
  
  <p>EDIT: This question is not at all related to the question this is marked as a duplicate of... @interface is not @implementation</p>