OC与C的语言联系
来源:互联网 发布:软件开发工作计划表 编辑:程序博客网 时间:2024/05/16 19:00
在之前的博文中讲过,OC是C语言的超集。那么,通过联系OC和C之间的语言特性,可以让我们更好的理解OC的语言设计特点,同时也加强了我们对语言共性的迁移能力。
共性一:实例变量存储在结构中
通过比较OC中类的性质和C语言中结构的性质。我们可以发现,定义一个OC的类和它的实例变量的时候,实例变量实际上是存储在一个结构内。所以继承实例变量加上在类中添加新变量相当于组成了一个新的结构(这是书本的话语,还不是很理解)
结构中继承的成员中有个isa保护成员,这个成员是从根类中继承的。isa对象用来判断该实例变量的类的归属。id动态类型在动态绑定时也具有这个成员。因此在运行时系统通过查看isa变量就可以判断变量属于哪一个类。
变量实际上是指针
在之前类的讨探中,我们初始化类的时候,会这么写
ClassName *vName =[Classname alloc];
这么写可以看作分配了空间的给一个Class类型的指针。然后将实例变量存储在这个空间中。
如果将一个类的变量直接赋值给另一个变量的话,仅仅是将两个指针指向同一个内存空间。因此如果通过任何一个指针修改这个空间中的内容的话,另一个指针取值也将会改变。
方法是函数,消息消息表达式是函数调用
这一点很好理解,在java等高级面向对象语言中都有讲到。
id是通用类型指针
id类型在我之前看书的理解中认为是一个通用类型。现在看来和指针联系起来更为明确。因为id类型没有指针类型,可以指向任何一个空间。由于对象始终携带的isa成员,所以系统运行是可以通过isa成员来确定指针的类型。
0 0
- OC与C的语言联系
- C与OC的区别和联系
- C语言 sizeof 与 strlen 的区别与联系
- C语言中指针与数组的区别与联系
- [C语言]strlen与sizeof的区别与联系
- swift和oc的联系与区别
- C语言与C++的区别和联系
- 语言的学习,C与JAVA有无联系
- c语言中数组和指针的区别与联系
- C语言的sizeof和strlen区别与联系
- C语言与C++的联系和区别
- C 语言与C++的区别于联系
- C语言中sizeof和strlen的区别与联系
- C语言printf()、sprintf()、vsprintf() 的区别与联系
- C语言printf()、sprintf()、vsprintf() 的区别与联系
- 关于C语言数组与指针的联系一起
- C语言printf()、sprintf()、vsprintf() 的区别与联系
- 面向过程(c语言)与面向对象(oc,c++,c#)的区别,oc初级知识扫盲
- Android继承ActionBarActivity之后,出现闪退情况解决方法
- SOJ 连分数问题解题报告
- Spring security AccessDeniedHandler 不被调用
- 二套房首付只要四成了,你们第一套房买了吗?
- Windows界面编程第三篇 异形窗体
- OC与C的语言联系
- 很详细的Objective-C内存管理教程和原理剖析
- 确定一个子字符串在主字符串中出现了多少次
- Android开发环境搭建
- git忽略对已入库文件的追踪
- Oracle squence自动生成trigger创建失败
- Android 使用Scroller实现绚丽的ListView左右滑动删除Item效果
- Telephony单元测试分析
- Redis简介