oc编程思想

面向对象概念

面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算是一种计算机编程范式, 它将对象作为问题空间的基本元素, 利用对象和对象之间的相互作用来设计程序.

对象的概念

面向对象思想把整个世界看成由各种对象来组成的. 这些对象具有属性和行为, OC中称之为属性和方法. 从最简单的整数到复杂的飞机等均可看作对象, 它不仅能表示具体的事物, 还能表示抽象的规则, 计划或事件.

类的概念

面向对象思想的中, 具体的事物是对象, 具有相同或相似性质的对象的抽象或者说描述就是类. 因此, 对象的抽象是类, 类的具体化就是对象, 也可以说类的实例是对象.

元类的概念

对象的抽象是类, 类的抽象又是什么呢?

前文提到OC是在C的基础上, 赋予了面向对象的能力. OC和其他的面向对象语言有一点区别, 它有元类的概念. OC中的’类’, 它的抽象叫做元类(meta class). 我们可以认为元类的具体化的对象就是类.
元类的结构定义如下:

struct objc_class {
    Class isa;
    Class super_class;
    const char *name;
    long version;
    long info;
    long instance_size;
    struct objc_ivar_list *ivars;
    struct objc_method_list **methodLists;
    struct objc_cache *cache;
    struct objc_protocol_list *protocols;

} OBJC2_UNAVAILABLE;

类也有自己的属性: 比如, name是类的名字, 这里是IPhone6. 对象的属性则是在ivars里, 这里姑且先让我用属性来称呼. methodLists是类的方法列表, 就手机的类的来说, 他的methodLists里就有call这个方法.

类也是一个具体的对象, 正因为OC是这样实现OOP的, 我们可以修改这个对象的属性的值, 从而实现一些特殊的用途.

我们可以动态的添加一个方法.

比如最早用功能机的时候是不可以安装app的, 我用的iPhone6是智能手机, 可以给他安装一个APP, 这样就可以干一些原本不能干的事情.
还可以通过swizzle技术交换2个方法的实现. 从而做出AOP编程.

类与对象的实质,参考文档:
http://southpeak.github.io/2014/10/25/objective-c-runtime-1/
http://www.jianshu.com/p/001b296688ec
https://juejin.im/entry/587d887f1b69e60058486a71

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 5,885评论 0 9
  • 序言 “佛曰:苦海无涯,回头是岸。——佛教用语” 面向对象(Object-Oriented),这是一条令无数开发人...
    叶小健阅读 7,206评论 4 24
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 14,035评论 6 13
  • 背景:大三下 实习面试 坐标上海 Java研发 其实接触Java满打满算也就一年不到,因为最近经常在用,就想试一下...
    郗南枫阅读 6,205评论 3 8

友情链接更多精彩内容