instancetype 与 id

what’s instancetype

instancetype 是和 id 一样的返回值类型,都表示返回值的类型不确定.

different with id

通过下面的代码可以很清楚的看出区别:

  1. 其实2个方法返回的都是Person类实例对象.

  2. 但是用 instancetype 作为返回值类型的方法,编译器可以清楚的知道它现在的类别,所以我们可以正常调用该类的一些属性和方法

  3. 而 id 作为返回值类型的,其类型在编译器看来就是一个不确定的类型,无法当做 Person 类使用,除非进行类型转换

  4. instancetype 不能像 id 一样作为参数的类型修饰

子类调用

可以看到子类调用父类的方法,instancetype返回的是子类的类型

结论

合理的使用instancetype,可以帮助我们在编码时更轻松~


原创文章,转载请注明地址: https://kevinmky.github.io