OC-类与对象

一、new方法
只要通过一个类调用类的new方法,也就是给类发送一个叫做new的消息之后,系统内部就回做3件事情:
1、为此类创建出来的对象在堆内分配存储空间
2、初始化此类创建出来的对象中的属性
3、返回此类创建出来的对象对应的地址

二、存储
创建对象的时候返回的地址其实就是类的第0个属性的地址
但是需要注意的是:类的第0个属性并不是我们编写的,而是一个叫isa的属性
isa是一个指针,占8个字节

其实类也是一个对象,平时我们所说的创建对象其实就是通过一个 类对象 来创建一个新的对象
类对象是系统自动帮我们创建的,里面保存了当前对象的所有方法
而实例对象是程序自己手动通过new创建的,而实例对象中有一个isa指针就指向了创建它的那个类对象
每次new都会创建一个新的对象,分配一块新的存储空间,如果修改a的属性不会影响b的属性,一个类可以创建多个对象

对象的存储细节.png
isa指针.png

局部变量存储在栈中
全局变量存储在静态区
成员变量存储在堆中,不会自动释放,只能程序员自动释放

三、方法与函数的区别:
1、函数属于整个文件,方法属于某一个类,方法如果离开类就不行
2、函数可以直接调用,方法必须通过类或对象来调用
注:虽然函数属于整个文件,但如果把函数写在类声明中会不识别
3、不能把函数当作方法来调用,也不能把方法当函数来调用

消息机制:
使用对象调用方法就是oc中的消息机制

推荐阅读更多精彩内容

  • 学习目标 1.【理解】对象在内存中的存储 2.【理解】nil和NULL 3.【了解】#pragma mark分组导...
    Hm丶阅读 108评论 0 3
  • 版权声明:本文为博主原创文章,未经博主允许不得转载。 学习目标 1.【理解】对象在内存中的存储 2.【理解】nil...
    LeaderBiao阅读 21评论 0 1
  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    萌萌的小伟哥阅读 492评论 0 0
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 74,875评论 12 116
  • 有很多人对工作日志这一制度有很大的抗拒感,甚至因为某个单位要求写工作日志而离职,认为这是一项陈旧、无用的管理制度,...
    henu王凯阅读 5,008评论 72 69