Objective-C instancetype keyword, instancetype keyword
InstancetypeStarting from clang 3.5, clang provides a keyword
Indicates the Objective-C object of the unknown type returned by a method.
Instancetype will tell the compiler the current type, which is similar to NSObject *, but the id is non-typed for the compiler. No error message is prompted when any method is called.
Instancetype type:
(1) instancetype allows the compiler to check the exact type of the instantiated object
(2) instancetype can only be used for the return type and cannot be used as a parameter
Instancetype & id comparison:
(1) instancetype indicates the type, which is the same as id and can represent any object type.
(2) instancetype can only be used in the return value type, and cannot be used in the parameter type like id
(3) instancetype has one more benefit than id: the compiler checks the real type of instancetype.