iOS 模板模式封装shell 解压、拷贝、删除命令

热门标签

,

特别声明:文章多为网络转载,资源使用一般不提供任何帮助,特殊资源除外,如有侵权请联系!

 最近在开发一款Mac App的小工具,业务也很简单;公司有一套代码块的模板,需要给每个人使用。如果手动操作就是解压zip模板包,拷贝至/Users/$USER/Library/Developer/Xcode/UserData/CodeSnippets目录下,重启XCode就Ok。大佬说,我们要简化步骤,给你个zip包,拖入再点击按钮就Ok了,替换手动解压再拷贝到XCode路径下,做到自动化。
场景很简单:拖入文件拷贝至缓存->解压Zip包并拷贝至XCode的缓存路径->删除缓存。
为什么不直接拷贝到XCode路径下?我的想法是不随便在XCode的路径下操作文件,万一误删了呢,所以解压好再拷贝。

在XCode种的需要调用NSTask才能调用命令,代码如下:

    NSTask * task = [[NSTask alloc] init];

    task.launchPath = @"/bin/sh";//文件路径
    task.arguments = runParam;
    task.currentDirectoryPath = [[NSBundle  mainBundle] resourcePath];
    
    NSPipe *outputPipe = [NSPipe pipe];
    [task setStandardOutput:outputPipe];
    [task setStandardError:outputPipe];
    NSFileHandle *readHandle = [outputPipe fileHandleForReading];
    
    [task launch];
    NSData *outputData = [readHandle readDataToEndOfFile];
    NSString * outputString = [[NSString alloc] initWithData:outputData encoding:NSUTF8StringEncoding];
    
    return outputString;

下面是命令的结构目录:

iOS 模板模式封装shell 解压、拷贝、删除命令
命令

ClearCommand、UnzipCommand、CpCommand是继承自TaskCommand,每个命令都需要调用executeTask模板的方法,而每条命令的参数却不同。

iOS 模板模式封装shell 解压、拷贝、删除命令
TaskCommand.h

getParams是抽象方法,在executeTask调用,要在子类中实现,以达到每条命令的参数不同

- (NSString *)executeTask{
    NSArray * runParam = [self getParams];
    NSString * result = [self executeTask:runParam];
    NSLog(@"%@",result);
    return result;
}

每个子类都需要实现getParams方法

iOS 模板模式封装shell 解压、拷贝、删除命令
ClearCommand

命令调用也很简单,使用业务的分离
_cpTask = [CpCommand new];
_clearTask = [ClearCommand new];
[_cpTask executeTask];
[_clearTask executeTask];

总结:1.模板模式简单实用,对于一个复杂的业务逻辑,能清爽的抽出重复的逻辑,每个类的职责清晰。
2.对于一些重复的代码逻辑,写成模板模式真是太好不过。之前有个主题业务,有主题列表和主题详情页;在主题列表和主题详情页有下载和使用按钮,涉及登录、下载、使用、进度条、鉴权等逻辑,跳转会员订购的逻辑,跳转指定书籍订购,但又有点差异在详情页时下载并使用,而在列表页是下载。这个时候写成两份是灾难性的,你改bug的时候需要修改两份。这个时候把业务逻辑封装成模板在父类实现,更新不同的UI可放至子类实现。
3.工具的demo

 

标签:

未经允许不得转载:作者:SheaYang, 转载或复制请以 超链接形式 并注明出处 技术Dog|博客
原文地址:《iOS 模板模式封装shell 解压、拷贝、删除命令》 发布于2019-11-02

分享到:
赞(0) 打赏

评论 抢沙发

6 + 3 =


iOS 模板模式封装shell 解压、拷贝、删除命令

长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu4.0主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?