首頁  >  問答  >  主體

objective-c - OC學習中碰到的一題目

作業系統中的進程,都不是無緣無故生成的,其都有自己的父進程,每個進程都由自己的父進程啟動。現給定進程父子關係描述表,使用(│ ├ └ ─ )字符來形象化輸出這個父子關係。
類 Process 描述了進程信息,如下:

@interface Process : NSObject
@property (nonatomic) NSString *name;   // 进程名
@property (nonatomic) NSArray<Process *> *children; // 子进程
@end
@implementation Process
-(instancetype)initWithName:(NSString*)name children:(NSArray<Process *> *)children {
  if (self = [super init]) {
    _name = name;
    _children = children;
  }
  return self;
}
- (instancetype)initFromDumpString:(NSString*)dump {
   // TODO
}
- (NSString*)dump {
    // TODO
}
@end

1)你的目標是要填入這個名為dump的方法,其傳回一個以字元方式輸出父子關係的字串。可以參考下面的範例。
【範例】

int main() {
    Process* xcode = [[Process alloc] initWithName:@"Xcode"
                                          children:@[[[Process alloc] initWithName:@"Simulator" children:nil],
                                                     [[Process alloc] initWithName:@"Debugger" children:nil]]];
    Process* finder = [[Process alloc] initWithName:@"Finder" children:nil];
    Process* qq = [[Process alloc] initWithName:@"QQ" children:nil];
    Process* launcher = [[Process alloc] initWithName:@"Launcher" children:@[xcode, finder, qq]];
     
    NSLog(@"%@", [launcher dump]);
    return 0;
}
/* 输出
Launcher
├─ Xcode
│  ├─ Simulator
│  └─ Debugger
├─ Finder
└─ QQ
*/ 

2)完成1步驟後,你需要填入名為initFromDumpString:的方法,該方法是1步驟的逆操作,其解析一個字元方式的父子關係字串,傳回一個已經初始化好的Person物件。

怪我咯怪我咯2751 天前688

全部回覆(0)我來回復

無回覆
  • 取消回覆