返回

对象——透过现象看本质

IOS

对象:透过现象看本质

我们知道,万物皆有本质,软件开发中也是如此。在OC中,万物皆是对象。****

对象是客观存在的某种实体的抽象,在计算机中,它是一种数据结构,由数据和方法组成。数据是对象的属性,方法是对象的行为。通俗地说,对象就是一种数据类型。

对象的本质是C++中的struct结构。struct是C++中的一种数据类型,它可以包含多个成员变量和方法。OC中的对象本质上也是struct结构,因此它也可以包含多个属性和方法。

在OC中,可以通过两种方式创建对象:

  1. 使用new。这种方法会创建一个新的对象,并将其存储在堆内存中。
  2. 使用alloc和init方法。这种方法会创建一个新的对象,并将其存储在栈内存中。

OC对象在内存中的布局如下:

+----------------+
| isa指针      |
+----------------+
| 属性1         |
+----------------+
| 属性2         |
+----------------+
| ...            |
+----------------+
| 方法1         |
+----------------+
| 方法2         |
+----------------+
| ...            |
+----------------+
  • isa指针:指向对象的类对象。
  • 属性:对象的属性,存储在对象的内存中。
  • 方法:对象的成员函数,存储在对象的内存中。

当对象不再被使用时,需要将其销毁。在OC中,可以通过两种方式销毁对象:

  1. 使用delete关键字。这种方法会销毁对象,并释放其占用的内存。
  2. 使用dealloc方法。这种方法会销毁对象,但不会释放其占用的内存。

OC中的对象本质上是C++中的struct结构。struct是C++中的一种数据类型,它可以包含多个成员变量和方法。OC中的对象也可以包含多个属性和方法,因此它本质上也是struct结构。

OC对象在内存中的布局如下:

+----------------+
| isa指针      |
+----------------+
| 属性1         |
+----------------+
| 属性2         |
+----------------+
| ...            |
+----------------+
| 方法1         |
+----------------+
| 方法2         |
+----------------+
| ...            |
+----------------+
  • isa指针:指向对象的类对象。
  • 属性:对象的属性,存储在对象的内存中。
  • 方法:对象的成员函数,存储在对象的内存中。