有关一个被删除的问题 “如何看待 Clean My Mac 3 加入磁盘权限修复功能” 的回复

这问题,我回复完了,发现原问题删除了,着实搓火,,把答案扔这儿来得了,要不也浪费。

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

1,有关 磁盘权限修复,这个 OS X 下所谓“万金油”的功能,我已经说了多次,我就不说这个功能本身了。


2,加入这个功能,从实现角度来说,是零成本的,也就是说,闭着眼都能实现这个功能,连两分钟都不用,干嘛不加上呢?毕竟很多用户用了我的应用程序,多一个功能可能就多一个加分项,虽然这个功能花了我两分钟不到的编码时间。

我为什么这么说,随便用个命令,dump 一下 CMM 3 Binary 的字符常量,你就能看出来:

strings ~/Desktop/CleanMyMac\ 3 | grep /usr
/usr/sbin/diskutil
/usr/bin/whereis
/usr/bin/defaults
/usr/bin/dscacheutil
/usr/bin/killall
/usr/bin/tar
/usr/bin/mdutil
^(/net)|^(/tmp)|^(/var)|^(/cores)|^(/private)|^(/opt(?!/homebrew-cask/Caskroom))|^(/dev)|^(/sbin)|^(/bin)|^(/etc)|^(/usr)|^(%@)|^(/Library)|^(/System)|^(/Developer)|^(/Applications/Developer Tools)|^(/System/Library)|^(/Volumes)|.+(\.app/).+|.+(\.pvm).*|.+(\.vmwarevm).*|.+/(.*\.)(?![0-9]+[a-zA-Z]*)(?!localized).+/.+\.app
/usr/bin/open
/usr/libexec/repair_packages
/usr/bin/ditto
/usr/sbin/pkgutil
/usr/bin/lsbom
/usr/local/ssl/lib/engines
/usr/local/ssl/private
/usr/local/ssl
/usr/local/ssl/certs
/usr/local/ssl/cert.pem
/usr/tmp

对吧,

0x000000010042ab50         db         "/usr/sbin/diskutil", 0                   ; XREF=cfstring__usr_sbin_diskutil

你说就这么一个功能,不加上它都对不起我啊,要我写我也加。最后证明下,

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSTask *task = [[NSTask alloc] init];
        task.launchPath = @"/usr/sbin/diskutil";
        task.arguments = @[@"repairPermissions", @"/"];
        NSPipe *pipe = [NSPipe pipe];
        NSFileHandle *handle = [pipe fileHandleForReading];
        task.standardOutput = pipe;
        task.standardError = pipe;
        [task launch];
        [task waitUntilExit];
        
        NSData *data = [handle readDataToEndOfFile];
        NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
        
        NSLog(@"%@", str);
    }
    return 0;
}


这多简单?其实这种抖机灵的东西多了,CMM 3 加了不少呢,

0x000000010040d4c4         db         "runPeriodicScript:withReply:"

说句不好听的,只要你了解 OS X 的东西,也了解一些常用的系统维护终端命令,外加上会用点 NSTask,performSelector 这类的玩意儿,给你点时间你也能写一个跟他功能差不多的,就是长的没人家漂亮就是了。

CMM 3 就是界面好看,功能也就那样,所有它的功能我都能自己实现,但是为啥还买?有钱任性外加懒呗!
编辑于 2015-02-25

文章被以下专栏收录

    敝专栏所涉猎话题包括但不限于美商 Apple 的 3C 电子、作业系统产品及相关的程式研发,也可能与其生活使用体验有关(包括字型),还可能会有其他的跑题。 如果您不习惯阅读简体中文的话,请自备「新同文堂」、以尊重自己的简繁体中文阅读习惯。该提议同样适用于仅习惯阅读简体中文的人士。关于「新同文堂」可参见:http://zhuanlan.zhihu.com/ibuick/20018071 「请看清每一篇文章的作者是谁。不同作者会对自己的文章有不同的智财权主张,但我们始终谢绝无断转载。」