title: Using instancetype as the return type of a copy in Objective-C?
body: <p>Using <code>instancetype</code> as a return value of <code>init</code> and related methods is the recommended way to proceed, see the latest <a href="http://clang.llvm.org/docs/LanguageExtensions.html#objective-c-features" rel="nofollow noreferrer">clang features</a>. However, what is the best practice w.r.t. the return value of <code>copyWithZone:</code> in the <code>NSCopying</code> protocol (see <a href="https://stackoverflow.com/questions/9907154/best-practice-when-implementing-copywithzone">this thread</a> for previous best practices)? It is not mentioned in the rules for inferring the class from the naming scheme of the methods in the clang article, but I don't see why it should be different than the return value of the <code>alloc</code> method.</p>
  
  <p>Does the type inference not work for <code>copy</code>-methods? Should we still return <code>instancetype</code> or rather the specific class type we actually return?</p>