一、类与对象

一、类与对象

1. 什么是类?什么是对象

  • 类 是具备某些共性特征(相同属性、行为)的对象的抽象统称。如人类
  • 对象 则是类的具体存在,需要开辟空间保存指向类的地址。

2. 根据类创建对象的内部实现

  • 当使用new或 alloc方法创建对象,系统内部会:
    (1) 给新建对象开辟存储空间
    (2) 初始化对象的属性
    (3) 返回对象的地址

    因此需要一个指针来保存对象的地址。类名后紧跟*号 Person *p
    • 同时引出,类的本质是一个结构体,对象的本质则是指向结构体的指针
  • 对象的存储细节
    在这里插入图片描述
    在这里插入图片描述
    程序启动,先把程序加载到代码区。 系统自动创建一个类对象,加载类中的对象方法列表。
    当通过一个类创建对象时,先在堆中开辟一块存储空间给对象p,再初始化对象的各属性为0,最后返回一个地址保存到栈中(局部变量接收)。对象的第0个属性是系统创建的isa指针,指向创建该对象的类。

3. 类方法与对象方法

  1. 类方法只能类调用,对象方法只能对象调用。
  2. 类方法和对象方法的选择
    - 对象方法的调用每次都需要开辟存储空间 。
    + 当不需要使用属性尽量定义为类方法。
    + 类方法常使用为定义工具类
  3. 注意点
    类方法只能类调用, 对象方法只能对象调用;
    但是类方法内部可以允许对象调用对象方法,对象方法内部允许类调用类方法;
    对象方法中允许访问属性,对象方法则不行;

4. SEL 数据类型

SEL将方法封装成sel 对象。SEL sel = @selector(test);
作用:

  1. 结合respondsToSelector(sel), 判断类或对象是否有方法实现。
  2. 结合performselector(sel), 执行类或对象的某个方法。
    注意:performselector可以通过withObject带参数,最多带两个,参数必须是对象。
  3. SEL作为参数,可以实现一个对象控制另一个对象实现某方法。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值