OC开发之——内存管理模型设计(42)

一 概述

设计一些类,可以自行建立每个类之间的联系,尽量用面向对象的思想思考问题:

  • 设计一个类表示一条微博,包含以下属性(发送时间属性可以忽略),微博内容,微博配图,发送时间,微博发送人,转发的微博,被评论数,被转发数
  • 设计一个微博用户类,包含以下属性:姓名,微博号码,密码,头像,性别,手机,生日

二 类的设计

2.1 User类

//User.h
#import <Foundation/Foundation.h>
//姓名,微博号码,密码,头像,性别,手机,生日
typedef enum {
    SexMan,
    SexWoman
} Sex;
typedef struct
{
    int year;
    int month;
    int day;
} Date;

@interface User : NSObject
@property (nonatomic,retain) NSString *name;
@property (nonatomic,retain) NSString *account;
@property (nonatomic,retain) NSString *password;
@property (nonatomic,retain) NSString *icon;
@property (nonatomic,assign) Sex sex;
@property (nonatomic,retain) NSString *phone;
@property (nonatomic,assign) Date birthday;
@end

//User.m
#import "User.h"
@implementation User
- (void)dealloc
{
    [_name release];
    [_account release];
    [_icon release];
    [_password release];
    [_phone release];
    [super dealloc];
}
@end

2.2 Status类

//Status.h
#import <Foundation/Foundation.h>
#import "User.h"
// 微博内容,微博配图,发送时间,微博发送人,转发的微博,被评论数,被转发数
@interface Status : NSObject
@property (nonatomic,retain) NSString *text;
@property (nonatomic,retain) NSString *icon;
@property (nonatomic,assign) long time;
@property (nonatomic,retain) User *user;
@property (nonatomic,retain) Status *retweetStatus;
@property (nonatomic,assign) int commentsCount;
@property (nonatomic,assign) int retweetsCount;
@end

//Status.m
#import "Status.h"
@implementation Status
- (void)dealloc
{
    [_text release];
    [_user release];
    [_retweetStatus release];
    [_icon release];
    [super dealloc];
}
@end

2.3 main.m

#import <Foundation/Foundation.h>
#import "User.h"
#import "Status.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...
        User *u1=[[User alloc]init];
        u1.name=@"zhangsan";
        
        User *u2=[[User alloc]init];
        u2.name=@"lisi";
        
        Status *s1=[[Status alloc]init];
        s1.text=@"今天天气真好!";
        s1.user=u1;
        
        Status *s2=[[Status alloc]init];
        s2.text=@"今天天气真的很好!";
        s2.user=u2;
    
        [u2 release];
        [u1 release];
        [s2 release];
        [s1 release];   
    }
    return 0;
}
《操作系统原理》实验指导书 实验一 生产者-消费者模型模拟进程调度 一、实验任务 1、在WINDOWS 2000环境下,创建一个控制台进程,此进程包括4个线程:2个生产者线程和2个消费者线程。 2、用信号量机制解决进程(线程)的同步与互斥问题。 二、实验目的 1.掌握基本的同步互斥算法,理解生产者和消费者模型。 2.了解Windows 2000/XP中多线程的并发执行机制,线程间的同步和互斥。 3.学习使用Windows 2000/XP中基本的同步对象,掌握相应的API。 三、实验要求 1.生产者消费者对缓冲区进行互斥操作。 2.缓冲区大小为10,缓冲区满则不允许生产者生产数据,缓冲区空则不允许消费者消费数据。 3.生产者消费者各循环操作50次。 四、设计思路和采取的方案 1.利用windows提供的API函数CreateSemaphore()创建信号量对象; CreateThread()创建线程; WaitForSingleObject()执行P操作; ReleaseSemaphore()执行V操作; WaitForMultipleObjects()主进程等待线程的结束等函数进行设计。 2.在Windows中,常见的同步对象有:信号量(Semaphore)、互斥量(Mutex) 。 使用这些对象都分为三个步骤,一是创建或者初始化; 接着请求该同步对象,随即进入临界区,这一步对应于互斥量的上锁;最后释放该同步对象,这对应于互斥量的解锁。这些同步对象在主进程中创建,在其子线程中都可。 实验二 存储管理 一、目的和要求 1. 实验目的 (1)掌握时间片轮换的进程调度算法; (2)掌握带优先级的进程调度算法; (3)选用面向对象的编程方法。 2、实验学时:2学时 3、实验要求 (1)自定义PCB的数据结构; (2)使用带优先级的时间片轮转法调度进程,每运行一个时间片,优先级减半。 (3)命令集 A)create 随机创建进程,进程的优先级与所需要的时间片随机决定; B)ps 查看当前进程状态 C)sleep 命令将进程挂起 D)kill 命令杀死进程 E)quit命令退出 二、实验内容 根据教师指定的实验课题,完成设计、编码、测试工作。 实验三 虚拟存储器 一、目的和要求 1. 实验目的 (1)掌握先进先出页面置换算法; (2)掌握随机替换页面置换算法; (3)掌握OPT页面置换算法; (4)掌握最近最少使用页面置换算法; (5)熟悉抖动现象及其产生原理; (6)熟悉C/C++编程。 2、实验学时:2学时 3、实验要求 (1)进程占用内存空间共640K,页面大小是1K/2K/4K/8K; (2)随机生成256个页面置换次序; (3)用于分配页面大小的内存总空间是32K; (4)给出四种页面置换算法的换页过程,并计算各自的缺页率。 二、实验内容 编写程序,使用四种不同的页面替换策略算法进行页面替换。分别是先进先出,随机替换,时钟页面替换,最近最久未使用页面替换,并计算缺页率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值