OC基础-静态类型,动态类型,编译检查,运行检查,父子类指针和对象互指17
来源:互联网 发布:网络客服招聘 编辑:程序博客网 时间:2024/05/22 05:17
1. 弱语言和强语言的区别.
编译器在编译的时候.语法检查的时候没有那么严格.
不管你怎么写都是可以的.
int num = 12.12;
优点:灵活咋个行都写.
缺点:太灵活
强类型的语言:编译器在编译的时候做语法检查的时候行就是行不行就是不行.
2.静态类型和动态类型
静态类型:
指的是1个指针指向的对象是1个本类对象.
动态类型:
指的是1个指针指向的对象不是本类对象.
3. 编译检查和运行检查.
编译检查
编译器在编译的时候,能不能通过1个指针去调用指针指向的对象的方法.
判断原则:看指针所属的类型之中是有这个方法,如果有就认为可以调用编译通过.
如果这个类中没有那么编译报错.
这个叫做编译检查.在编译的时候能不能调用对象的方法主要是看指针的类型.
我们可以将指针的类型做转换,来达到骗过编译器的目的.
运行检查.
编译检查只是骗过了编译器.但是这个方法究竟能不能执行.
所以在运行的时候.运行时会去检查对象中是否真的有这个方法.如果有就执行如果没有就报错误.
代码里可以在执行的时候检查一下
1).判断对象中是否有这个方法可以执行.
- (BOOL)respondsToSelector:(SEL)aSelector;
2).判断类中是否有指定的类方法.
+ (BOOL)instancesRespondToSelector:(SEL)aSelector;
3).判断指定的对象是否为 指定类的对象或者子类对象.
- (BOOL)isKindOfClass:(Class)aClass;
4).判断对象是否为指定类的对象不包括子类.
- (BOOL)isMemberOfClass:(Class)aClass;
5).判断类是否为另外1个类的子类.
+ (BOOL)isSubclassOfClass:(Class)aClass;
4 父子类指针和对像互指
父类指针指向子类对象.
实际上任意的指针可以执行任意的对象.编译器是不会报错的.父指针指向子类对象,因为子类继承了父类的所有属性,使用的时候,只能获得父类中有的方法和属性,而子类中拥有父类中的 所有方法和属性,在运行的时候,也不会报错。
当1个子类指针指向1个父类对象的时候,如果调用了子类中的特有方法,编译器运行通过子类指针去调用子类独有的方法.编译不会出错
但是在运行的时候是会出问题的.因为父类对象中根本没有子类成员.
- OC基础-静态类型,动态类型,编译检查,运行检查,父子类指针和对象互指17
- 静态类型和动态类型检查
- 关于继承更关于静态类型和动态类型检查
- 指针静态和动态转化的时候注意的是否检查指针类型
- 编译时类型检查与运行时类型检查
- 运行时类型检查
- 动态类型检查
- javascript 对象类型检查
- javascript:对象类型检查
- C++基础之:对象的静态类型和动态类型
- 类型检查和转换
- 静态类型检查与继承
- C++运行时类型检查
- 类型检查
- 类型检查
- Kotlin-类型检查和转换
- scala类型检查和转换
- C++ 是一门静态类型语言,在编译时会作类型检查
- 树上取数
- clipboard.js实现复制功能
- CF Okabe and Boxes
- OC基础-@property,@synthesize和@dynamic 16
- AxonFramework,SpringBoot自动配置
- OC基础-静态类型,动态类型,编译检查,运行检查,父子类指针和对象互指17
- Element对象的firstchild和lastChild获取属性值的undefined问题
- JBDC+mysql Notes
- Window7旗舰64位SP1下安装MariaDB10.2.6
- Kubernetes服务之StatefulSets简介
- LEetCode(6)
- uwsgi+django+nginx+supervisor部署web应用(python)
- 关于为什么element对象的childNodes属性返回值有偏差的问题解释(知其所以然)
- kernel (I) basic learning