• OC基础(3)


    对象的存储细节

    本小节知识点

    1. 对象的存储细节
    2. isa指针
    3. 使用一个类创建多个对象

    1.对象的存储细节

    • 类创建对象,每个对象在内存中都占据一定的存储空间,每个对象都有一份属于自己的单独的成员变量,所有的对象公用类的成员方法,方法在整个内存中只有一份,类本身在内存中占据一份存储空间,类的方法存储于此

    2.isa指针

    • 每一个对象都包含一个isa指针.这个指针指向当前对象所属的类。
    • [p eat];表示给p所指向的对象发送一条eat消息,调用对象的eat方法,此时对象会顺着内部的isa指针找到存 储于类中的方法,执行。
    • isa是对象中的隐藏指针,指向创建这个对象的类。
    • 通过isa指针我们可以在运行的时候知道当前对象是属于那个Class(类)的 

    3.使用一个类创建多个对象

    Car *car1 = [Car new];
    Car *car2 = [Car new]


    函数与方法对比

    • 对象方法:
      • (1)对象方法的实现只能写在@implementation...@end中,对象方法的声明只能写在 @interface...@end中间
      • (2)对象方法都以-号开头,类方法都以+号开头
      • (3)对象方法只能由对象来调用,类方法只能由类来调用,不能当做函数一样调用
      • (4)函数属于整个文件,可以写在文件中的任何位置,包括@implementation...@end中,但写在 @interface...@end会无法识别,函数的声明可以在main函数内部也可以在main函数外部。
      • (5)对象方法归类对象所有
    • 函数:
      • (1)所有的函数都是平行的
      • (2)函数不存在隶属关系
      • (3)使用的时候可以直接调用
      • (4)不可以访问对象中的成员变量

    常见错误

    • 1)@interface @end和@implementation @end不能嵌套包含
    • 2) OC是弱语法,可以只有@implementation,但实际开发中千万不要这样。
    • 4)漏写@end
    • 5)两个类的对象声明顺序(可以把顺序打乱)
    • 6)成员变量没有写在{}里
    • 7)方法的声明写在了{}里面
    • 8)在声明时不能对类的成员变量进行初始化,请注意成员变量不能脱离对象而独立存在
    • 9)方法无法像函数那样的调用
    • 10)成员变量和方法不能用static等关键字修饰,不要和c语言混淆
    • 11)类的实现可以写在mian函数后面,在使用之前只要有声明就可以
  • 相关阅读:
    瀑布流
    进度条
    图片延迟加载、scroll
    scroll 滚动广告
    json
    样式更改
    js 不同浏览器的宽度获取
    孤立点挖掘算法
    数据结构算法代码
    深入浅出JMS(一)--JMS基本概念
  • 原文地址:https://www.cnblogs.com/zhoudaquan/p/5014688.html
Copyright © 2020-2023  润新知