美文网首页
类与对象

类与对象

作者: 卡卡果 | 来源:发表于2015-12-22 13:36 被阅读0次

类型如下:

引用类型:reference type

类:class

指针:pointer

块:block

值类型:value type

基础数值类型

结构:struct

枚举:enum

类型装饰

协议:protocol

类别:category

扩展:extension

类:class VS 结构体 struct

类:

接口:@interface 指的是对外可见的部分。

接口文件

@interface Point(类名):NSObject(继承的类)

属性定义   属性:对象的状态

@property int x;

实例方法:方法是行为

-(void)prints;返回值时void的。

@end

比如初始化对象。

Point *p1=[Point alloc] init];//先分配内存,接着初始化。

p1:就叫做对象。

对象的空间分析:

对象:栈上存储的是指针,堆上存储的是真正的对象。

类:是引用类型

指针:存在栈上

实体对象:存在堆上

结构是值类型

值类型,直接存在栈上。

重点 栈(stack)VS 堆(heap)

栈:存储值类型

无ARC(自动引用计数)负担,由系统自动管理,以执行函数为单位(一个函数一个栈,一个栈的大小:根据类型,参数,函数变量等来计算)

空间大小,编译时确定(参数+局部变量)

函数执行时,系统自动分配一个stack栈。

函数执行结束时,系统立即收回stack栈。

函数之间通过拷贝值传递。

具有局部性,大小有限制(一般就几兆),超出会(stack)栈overflow(溢出)。一般不会溢出,除非你写出死循环,超大递归会导致溢出,栈的负担比较小。

堆:存储引用类型对象

分配由程序员手动请求(创建对象的时候)

释放由运行时的ARC机制自动释放(确定时)

函数之间通过拷贝引用(指针)传递。

具有全局性,总体无大小限制(受制于系统内存整体大小),最自由也会最容易出问题,内存泄漏问题。

例子如下:

RPoint.h

#import

@interface RPoint : NSObject

//属性

@property int x;

@property int y;

//打印方法

-(void)prints;

@end

类实现文件

  RPoint.m

#import "RPoint.h"

@implementation RPoint

//实现打印方法

-(void)prints{

NSLog(@"[%d,%d]",self.x,self.y);

}

@end

结构体

 SPoint.h

typedef struct{

int x;

int y;

}SPoint;

////  main.m

#import#import "RPoint.h"

#import "SPoint.h"

int main(int argc, const char * argv[]) {

@autoreleasepool {

//初始化对象。手动分配内存

RPoint *rp1=[[RPoint alloc] init];

rp1.x=10;

rp1.y=20;

[rp1 prints];

//再初始化一个对象

RPoint *rp2=rp1;

rp2.x=30;

rp2.y=40;

[rp2 prints];

[rp1 prints];

//指针存在 栈中,会复制一个栈出来,但是堆还是一个。值存在堆中。当rp2和rp1指向的都是同一个堆。所以。rp2改变的时候。rp1也相应改变。

//结构体是值类型。直接存在栈上。

SPoint sp1;

sp1.x=11;

sp1.y=22;

NSLog(@"x=%d,y=%d",sp1.x,sp1.y);

SPoint sp2=sp1;

sp2.x=12;

sp2.y=23;

NSLog(@"x=%d,y=%d",sp2.x,sp2.y);

NSLog(@"x=%d,y=%d",sp1.x,sp1.y);

//结构体,拷贝出来的是一个栈。所以他们的值不是一个。sp2更改后,对sp1没有影响。

}

return 0;

}

相关文章

  • 类与对象(类与对象定义)

    类与对象的定义和使用 如果在程序之中要定义一个类可以使用class关键字完成,而定义的语法如下: 在这个类中只是定...

  • 函数类和对象区别

    类与类:行为不同 对象与对象:数据不同

  • python入门开发学习笔记之类与对象

    本节重点 掌握什么是类、什么是对象 掌握如何定义及使用类与对象 了解对类与对象之间的关系 类与对象的概念 类即类别...

  • 类对象与类的对象

    类对象(obj.getClass)描述的是类的代码信息,比如哪些属性、属性是什么类型、变量名是什么、哪些方法、方法...

  • python-高级、面向对象

    一、类与对象 二、类和对象

  • Java面向对象笔记

    类和对象 对象的概念 什么是面向对象 类 什么是对象的属性 什么是对象的方法 类与对象的关系/与区别 什么是对象 ...

  • 006-面向对象1

    面向过程与面向对象 开车问题 吃饭问题 做饭问题 类与对象 类的概念 对象的概念 练习: 区分类与对象 类的组成 ...

  • 三、元类对象的本质

    1. 元类对象结构。 与类对象的结构一样。 与类对象比较 2. 元类对象的获取。 通过object_getClas...

  • 格物致知iOS类与对象

    格物致知iOS类与对象 格物致知iOS类与对象

  • 类与对象

    类与对象是整个面向对象之中最为基础的组成单元;类是共性的集合,对象是个性的产物。所有的类都是用来描述出对象的结构,...

网友评论

      本文标题:类与对象

      本文链接:https://www.haomeiwen.com/subject/xvomhttx.html