id和instancetype区别

id和instancetype区别

作用

instancetype:可以返回明确的类型,但不能作为参数类型。

id:可以用来表示变量和方法参数的类型。如果程序运行时无法确定一个对象的类型,就可以将该对象声明为id。

异同

1、相同点

都可以作为方法的返回类型

2、不同点

  • instancetype可以返回和方法所在类相同类型的对象,id只能返回未知类型的对象;
  • instancetype只能作为返回值,不能像id那样作为参数

推荐用法

作为返回值时,使用instancetype。

作为参数时,只能使用id。

用instancetype代替id作返回类型有什么好处?

Objective-C中的instancetype和id区别

时间: 2024-10-13 21:13:25

id和instancetype区别的相关文章

【iOS开发-48】九宫格布局案例:自动布局、字典转模型运用、id和instancetype区别、xib重复视图运用及与nib关系

本次九宫格案例: (1)导入app.plist和各种图片素材,方便后续开发.实际开发中,也是如此. (2)把plist中数组导入进来. --因为本案例中app.plist最终是一个数组,数组里面是字典.所以我们需要一个数组类型来接受这个plist文件. --我们利用之前掌握的在变量的getter中进行延迟加载数据. #import "ViewController.h" @interface ViewController () @property(nonatomic,strong) NS

id 和 instancetype 方法的区别

首先明确 id 和 instancetype 都是万能指针,都能指向一个对象:(instancetype == id == 万能指针 == 指向一个对象) 主要区别亮点: 1. id 在编译时候不能判断对象的真是类型,但是instancetype 编译的时候可以判断对象真是类型,这样的话,编写代码时候,如果类型指错,instancetype可以告警.我们应该尽量把告警暴露在编译的时候. 2.另外  instancetype 只能用来做返回值,不能和id一样定义变量. // id在编译的时候不能判

iOS开发中id、NSObject *、id、instancetype四者有什么区别?

在使用Objective-C语言进行iOS应用开发的时候,常常会涉及到id.NSObject *.id.instancetype这四个概念的使用,但这四者也是iOS初学者最易混淆的内容,下面小编看了一些iOS开发教程和文档,搜罗了他们的不同用法,分享给大家,一起来看看吧. 1. id与NSObject * (1)id是Objective-C对象,但是并不一定是NSObject对象,并非所有的Foundation/Cocoa对象都是继承于NSObject对象的,比如NSProxy.同时,id与NS

id 和 instancetype

静态数据类型 默认情况下所有的数据类型都是静态数据类型 静态数据类型的特点: 1 在编译时就知道变量的类型 2 知道变量中有哪些属性和方法 3 在编译的时候就可以访问这些属性和方法 4 并且如果是通过静态数据类型定义变量,如果访问了不属于静态数据类型的属性和方法,那么编译器就会报错 动态数据类型 id 是一个动态数据类型 动态数据类型的特点 1 在编译的时候编译器并不知道变量的真实类型,只有在运行的时候才知道它的真实类型 2 并且如果通过动态数据类型定义变量,如果访问了不属于动态类型的属性和方法

类和ID选择器的区别

学习了类选择器和ID选择器,我们会发现他们之间有很多的相似处,是不是两者可以通用呢?我们不要着急先来总结一下他们的相同点和不同点: 相同点:可以应用于任何元素不同点: 1.ID选择器只能在文档中使用一次.与类选择器不同,在一个HTML文档中,ID选择器只能使用一次,而且仅一次.而类选择器可以使用多次. 下面代码是正确的: <p>三年级时,我还是一个<span class="stress">胆小如鼠</span>的小女孩,上课从来不敢回答老师提出的问题

id和instancetype的异同

相同点: 都可以作为方法返回值类型 在initWithName:方法中是一样的,例如: - (id)initWithName:(NSString *)name; - (instancetype)initWithName:(NSString *)name; 编译器在编译时直接将id转换成instancetype类型 不同点: 1.instancetype只能作为返回值类型,不能像id一样作为参数类型; 2.作为返回值类型时,在自定义方法中也有不同之处 + (id)constructAnArray;

@+id/和android:id有什么区别?

Any View object may have an integer ID associated with it, to uniquely identify the View within the tree. When the application is compiled, this ID is referenced as an integer, but the ID is typically assigned in the layout XML file as a string, in t

CSS选择器中类和ID选择器的区别

类和ID选择器的区别 学习了类选择器和ID选择器,我们会发现他们之间有很多的相似处,是不是两者可以通用呢?我们不要着急先来总结一下他们的相同点和不同点: 相同点:可以应用于任何元素不同点: 1.ID选择器只能在文档中使用一次.与类选择器不同,在一个HTML文档中,ID选择器只能使用一次,而且仅一次.而类选择器可以使用多次. 下面代码是正确的: <p>三年级时,我还是一个<span class="stress">胆小如鼠</span>的小女孩,上课从来

Android查缺补漏(View篇)--布局文件中的“@+id”和“@id”有什么区别?

Android布局文件中的"@+id"和"@id"有什么区别? +id表示为控件指定一个id(新增一个id),如: <cn.codingblock.view.customer_view.MyView android:id="@+id/myview" ... /> id表示引用一个现有的id,如: <cn.codingblock.view.customer_view.MyView android:id="@+id/myv