【静态类型和动态类型 编译检查和运行检查 Objective-C中】

本文介绍了Objective-C作为一门弱类型语言的特点,强调了静态类型和动态类型的区别。静态类型指指针指向的对象是本类对象,而动态类型则可能指向子类对象。编译检查主要关注指针类型是否包含所需方法,而运行检查则检查实际对象是否包含该方法。文章通过实例解释了如何通过类型转换骗过编译器以及编译和运行时检查的不同。
摘要由CSDN通过智能技术生成

前言

OC语言是一门弱语言:
1)编译器在编译的时候,检查的时候没有那么严格,不管你怎么写都是可以的。
2)例如:int num = 12.12; 这句话可以吗?答案是:可以!
3)例如,有两个类:
@interface Animal : NSObject
@property NSString *name;
@end
@implementation Animal
@end

@interface Pig : Animal
@end
@implementation Pig
@end

这时候,你在main.m里面写一个:
#import <Foundation/Foundation.h>
#import “Pig.h”
int mainI()
{:
NSString *str = [Pig new];
}
这句话是不会报错的。
4)优点:
灵活 咋个写都行
缺点:太灵活
比如上面的main.m函数里,加一句 [str length];编译器不会报错,但是运行时候,由于str里面没有length方法,所以就崩掉了。
5)强类型的语言:
编译器在做语法检查的时候,特别的严格,行就是行,不行就是不行!

一、静态类型是什么?

1)静态类型ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清风清晨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值