类与对象

2016-01-08  本文已影响61人  Maxmin

类型系统


类 class VS. 结构 struct

RPoint.h 接口

@interface RPoint: NSObject
/// 接口,继承自NSObject

@property int x;//状态
@property int y;
/// 属性,里面放了一些数据程艳

-(void)print;//行为
///方法,简单来说就是类内的函数

@end

类:

RPoint.h 实现

#import<Foundation/Foundation.h>
#import "rpoint.h"

@implementation RPoint

-(void)print{
  NSLog(@"[%d,%d]",self.x,self.y);//self就是当前的实例
}

@end

在程序中

//创建对象
RPoint *rp1[[RPoint alloc] init];//对象都以指针形式存在,先进行动态内存分配,alloc是向系统请求内存分配,init进行初始化。

rp1.x=10;
rp1.y=20;
[rp1 print];//调用方法

结构

定义一个结构SPoint.h

typedef struct{
  int x;
  int y;
}Spoint;

结构中不能再加入方法。

在程序中创建一个结构的实例

Spoint sp1;
sp1.x=10;
sp1.y=20;

对象的空间分析

对象的空间分析.png

值的空间分析

值的空间分析

栈和堆的区别

栈和堆.png

在程序中行为上的区别

拷贝

RPoint *rp2=rp1;
rp2.x++;
rp2.y++;

[rp1 print];
[rp2 print];

Spoint sp2=sp1;
sp2.x++;
sp2.y++;
NSLog(@"[d%,d%]"sp1.x,sp1.y);
NSLog(@"[d%,d%]"sp2.x,sp2.y);

rp1和rp2同时被更改,而sp2的更改对sp1无影响


拷贝行为.png
上一篇下一篇

猜你喜欢

热点阅读