zoukankan      html  css  js  c++  java
  • Objective--C Practice and source code

    Qustion:(MRC下)

    1、定义一个Computer类

    实例变量:float width; NSString *name;

    方法:一个带两个参数的初始化函数;print()函数;dealloc()函数;

    2、定义一个Person类

    实例变量:NSString *name; Computer *c; int age;

    方法:一个带三个参数的初始化函数;print()函数;dealloc()函数;

    要求:用该类创建出来的对象能实现copy和存入文件。

    3、主函数要求:

    a)分别创建Computer类的对象cc和Person类对象pp;并输出对象信息。

    b)利用copy函数创建Person类对象p1; 并输出对象信息

    c)把pp存入文件hello.txt中,文件目录为Documents目录。

    d)从文件hello.txt中读取对象p2, 并输出对象信息。

    e)不能出现内存泄漏和多次删除。

    ---------------------------------------------------------------------------------------------------------

    Source code:

      1 #import <Foundation/Foundation.h>
      2 
      3 @interface Computer : NSObject <NSCoding>
      4 
      5 @property (nonatomic, assign) float width;
      6 @property (nonatomic, retain) NSString *name;
      7 
      8 - (id)initWithWidth:(float)w andName:(NSString *)n;
      9 
     10 - (void)print;
     11 
     12 @end
     13 
     14 #import "Computer.h"
     15 
     16 @implementation Computer
     17 
     18 - (id)initWithWidth:(float)w andName:(NSString *)n
     19 {
     20     if (self = [super init])
     21     {
     22         _width = w;
     23         self.name = n;
     24     }
     25     return self;
     26 }
     27 
     28 - (void)print
     29 {
     30     NSLog(@"Width = %f, Name = %@", _width, _name);
     31 }
     32 //编码
     33 - (void)encodeWithCoder:(NSCoder *)aCoder
     34 {
     35     [aCoder encodeObject:[NSNumber numberWithFloat:_width] forKey:@"1"];
     36     [aCoder encodeObject:_name forKey:@"2"];
     37 }
     38 //解码
     39 - (id)initWithCoder:(NSCoder *)aDecoder
     40 {
     41     if (self = [super init])
     42     {
     43         _width = [[aDecoder decodeObjectForKey:@"1"] floatValue];
     44         self.name = [aDecoder decodeObjectForKey:@"2"];
     45     }
     46     return self;
     47 }
     48 
     49 - (void)dealloc
     50 {
     51     self.name = nil;
     52     [super dealloc];
     53 }
     54 
     55 @end
     56 
     57 #import <Foundation/Foundation.h>
     58 
     59 @class Computer;
     60 @interface Person : NSObject <NSCoding, NSCopying>
     61 
     62 @property (nonatomic, assign) int age;
     63 @property (nonatomic, retain) NSString *name;
     64 @property (nonatomic, retain) Computer *c;
     65 
     66 - (id)initWithAge:(int)a andName:(NSString *)n andComputer:(Computer *)cc;
     67 
     68 - (void)print;
     69 
     70 @end
     71 
     72 #import "Person.h"
     73 #import "Computer.h"
     74 
     75 @implementation Person
     76 
     77 - (id)copyWithZone:(NSZone *)zone
     78 {
     79     Person *p = [[Person allocWithZone:zone] initWithAge:_age andName:_name andComputer:_c];
     80     return p;
     81 }
     82 
     83 - (void)encodeWithCoder:(NSCoder *)aCoder
     84 {
     85     [aCoder encodeObject:_name forKey:@"1"];
     86     [aCoder encodeObject:_c forKey:@"2"];
     87     [aCoder encodeObject:[NSNumber numberWithInt:_age] forKey:@"3"];
     88 }
     89 
     90 - (id)initWithCoder:(NSCoder *)aDecoder
     91 {
     92     if (self = [super init])
     93     {
     94         self.name = [aDecoder decodeObjectForKey:@"1"];
     95         self.c = [aDecoder decodeObjectForKey:@"2"];
     96         _age = [[aDecoder decodeObjectForKey:@"3"] intValue];
     97     }
     98     return self;
     99 }
    100 
    101 - (id)initWithAge:(int)a andName:(NSString *)n andComputer:(Computer *)cc
    102 {
    103     if (self = [super init])
    104     {
    105         _age = a;
    106         self.name = n;
    107         self.c = cc;
    108     }
    109     return self;
    110 }
    111 
    112 - (void)print
    113 {
    114     NSLog(@"Age = %d, Name = %@, Computer = %@", _age, _name, _c);
    115 }
    116 
    117 - (void)dealloc
    118 {
    119     self.name = nil;
    120     self.c = nil;
    121     
    122     [super dealloc];
    123 }
    124 
    125 @end
    126 
    127 #import <Foundation/Foundation.h>
    128 #import "Computer.h"
    129 #import "Person.h"
    130 
    131 int main(int argc, const char * argv[]) {
    132     @autoreleasepool {
    133         Computer *c = [[Computer alloc] initWithWidth:20.5 andName:@"Apple"];
    134         [c print];
    135         
    136         Person *p = [[Person alloc] initWithAge:20 andName:@"xiaoming" andComputer:c];
    137         [p print];
    138         
    139         Person *p1 = [p copy];
    140         [p1 print];
    141         
    142         NSString *path = @"/Users/hskj/Documents/hello.txt";
    143         [NSKeyedArchiver archiveRootObject:p toFile:path];
    144         Person *p2 = [NSKeyedUnarchiver unarchiveObjectWithFile:path];
    145         [p2 print];
    146         
    147         [p1 release];
    148         [p release];
    149         [c release];
    150     }
    151     return 0;
    152 }
  • 相关阅读:
    搭建了一个在线的机器学习webshell检测RESTful API
    CentOS yum 安装RabbitMQ
    python使用pika链接rabbitmq Connection reset by peer 解决办法
    docker image 转换 docker file
    破解微信某游戏
    任务型对话(一)—— NLU/SLU(意图识别和槽值填充)
    KL散度、JS散度、Wasserstein距离
    机器翻译评价指标 — BLEU算法
    文本相似度 — TF-IDF和BM25算法
    Deep Reinforcement Learning for Dialogue Generation 论文阅读
  • 原文地址:https://www.cnblogs.com/songlei0601/p/5753136.html
Copyright © 2011-2022 走看看