静态类型、动态类型
1个回答
展开全部
1.静态类型和动态类型
静态类型
将一个指针变量定义为特定类的对象时,使用的是静态类型,在编译的时候就知道这个指针变量所属的类,这个变量总是存储特定类的对象。
动态类型
这一特性是程序直到执行时才确定对象所属的类
2.为什么要有动态类型?
(1).我们知道NSObject是OC中的基类
(2).那么任何对象的NSObject类型的指针可以指向任意对象,都没有问题
(3).但是NSObject是静态类型,如果通过它直接调用NSObject上面不存在的方法,编译器会报错。
(4).你如果想通过NSObject的指针调用特定对象的方法,就必须把NSObject * 这种类型强转成特定类型。然后调用。如下
(5).id 是一种通用的对象类型,它可以指向属于任何类的对象,也可以理解为万能指针 ,相当于C语言的 void *
(6).因为id是动态类型,所以可以通过id类型直接调用指向对象中的方法, 编译器不会报错
注意:
3.id数据类型与静态类型
虽然说id数据类型可以存储任何类型的对象,但是不要养成滥用这种通用类型
动态类型判断类型
3.id与instancetype区别
静态类型
将一个指针变量定义为特定类的对象时,使用的是静态类型,在编译的时候就知道这个指针变量所属的类,这个变量总是存储特定类的对象。
动态类型
这一特性是程序直到执行时才确定对象所属的类
2.为什么要有动态类型?
(1).我们知道NSObject是OC中的基类
(2).那么任何对象的NSObject类型的指针可以指向任意对象,都没有问题
(3).但是NSObject是静态类型,如果通过它直接调用NSObject上面不存在的方法,编译器会报错。
(4).你如果想通过NSObject的指针调用特定对象的方法,就必须把NSObject * 这种类型强转成特定类型。然后调用。如下
(5).id 是一种通用的对象类型,它可以指向属于任何类的对象,也可以理解为万能指针 ,相当于C语言的 void *
(6).因为id是动态类型,所以可以通过id类型直接调用指向对象中的方法, 编译器不会报错
注意:
3.id数据类型与静态类型
虽然说id数据类型可以存储任何类型的对象,但是不要养成滥用这种通用类型
动态类型判断类型
3.id与instancetype区别
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
Storm代理
2023-07-25 广告
2023-07-25 广告
StormProxies是一家提供动态代理服务器服务的企业,旨在帮助用户更好地管理网络访问和安全。以下是一些关于StormProxies的IP动态代理服务的特点:1. 高匿名性:StormProxies的动态代理服务器具有高匿名性,可以有效...
点击进入详情页
本回答由Storm代理提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询