一 概述
- 第一个OC类简单介绍了OC开发中类的定义,属性的声明及编译过程及常见的错误问题
- 本文以一个示例展开介绍,并分析类在内存中的分配情况
二 示例
2.1 代码编写
复制
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
#include <Foundation/Foundation.h>
@interface Person:NSObject
{
@public
int age;
double weight;
}
-(void)walk;
-(void)eat;
@end
@implementation Person
-(void)walk
{
NSLog(@"%d岁,%f公斤的人走了一段路",age,weight);
}
-(void)eat
{
NSLog(@"%d岁,%f公斤的人在吃东西",age,weight);
}
@end
int main()
{
Person *p=[Person new];
p->age=20;
p->weight=50.0;
[p walk];
[p eat];
Person *p1=[Person new];
p1->age=30;
p1->weight=60.0;
[p1 walk];
return 0;
}
|
2.2 输出结果
复制
1 2 3 |
2020-03-30 20:30:31.800 a.out[1638:25451] 20岁,50.000000公斤的人走了一段路 2020-03-30 20:30:31.800 a.out[1638:25451] 20岁,50.000000公斤的人在吃东西 2020-03-30 20:30:31.800 a.out[1638:25451] 30岁,60.000000公斤的人走了一段路 |
三 类在内存中的分配
3.1 内存分配一
代码
复制
1 2 3 4 |
Person *p=[Person new]; p->age=20; p->weight=50.0; [p walk]; |
示意图
3.2 内存分配二
代码
复制
1 2 3 4 5 6 7 |
Person *p=[Person new]; p->age=20; p->weight=40; Person *p2=p; p2->age=30; [p walk]; |
示例图
3.3 内存分配三
代码
复制
1 2 3 4 5 6 7 8 9 10 |
Person *p= [Person new]; p->age=20; p->weight2=40; Person *p2=[Person new]; p2->age=30; p2->weight=50; p=p2; p->age=40; [p2 walk]; |
示意图
3.4 内存分配四
代码
复制
1 2 3 4 5 6 7 8 9 10 11 |
Person *p=[Person new]; p->age=20; p->weight=40; [p eat]; [p walk]; Person *p2=[Person new]; p->age=30; p->weight=60; [p2 eat]; [p2 walk]; |
示意图