2-1 面向对象OOP

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

     什么是面向对象?

     对象的概念:即将所有事物都当对象来看待,比如我的手机,他有屏幕尺寸,重量,名字等等属性,他有打电话,发短信等等行为。当然,他的屏幕尺寸也可以当一个对象来看待。

     类的概念:类,就是对具有相同特性的对象抽象的描述。比如手机,我的iPhone6对象和你的iPhoneX对象都是iPhone。iPhone就是一个类。对象的抽象是类,类的实例是对象。

     元类:OC具有元类的概念,这算一个特性了。我们说过,万事万物都可以当对象来处理,对象的抽象化描述-类也能当做对象来看待。元类,就是对类的抽象。元类的实例对象就是类。

     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;

     这就是元类的结构体定义。相信如果你研究过runtime的C实现,应该不陌生了。

     想想看,假如有一个手机类。我们修改元类的方法,将拨打电话的功能与发短信的功能交换,会不会很有乐趣。

     其实这也就是runtime中的swizzle技术了。

     如果你的项目需要大规模的改动某些函数实现。试试这些黑魔法吧。但是我们暂时不做讨论。等博客更新到runtime这章,再来好好学习一遍。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值