今年接手了一个新项目,据说他们是从外包手里把代码接过来没多长时间。说实话已经无力吐槽了,对我这种有强迫症的人来说,他们那些多余的文件,和多余的图片让我一直有一种乱七八糟的感觉。经过一段时间的熟悉,开启了我对这个工程的改造之旅。我感觉有必要写下来的就是我对多余图片和重名的没有直接删除的文件的处理吧。这个东西没什么技术含量,就是个人感觉还是记录下来比较好。
1.对重名的文件的处理。
我感觉这个问题也不是谁都能遇到的,也就我接手的这个奇葩工程有。当时是想写个shell脚本查下都那个几个文件重复了,然后再验证下用的那个,把其余的删除了。无奈,水平太低了,没写出来。后来一想OC也可以做同样的事啊,果断OC走起,代码如下。
NSFileManager *fileManager = [NSFileManager defaultManager]; NSError *error = nil; NSArray *fileList = [[NSArray alloc] init]; //fileList便是包含有该文件夹下所有文件的文件名及文件夹名的数组 fileList = [fileManager subpathsOfDirectoryAtPath:@"/Users/Tony/Desktop/1.3.1/cake" error:&error]; for (NSString * str in fileList) { if ([str containsString:@"/"]) { NSString * temp = [str componentsSeparatedByString:@"/"].lastObject; if ([temp containsString:@".h"]) { for (NSString * str2 in fileList) { if ([str isEqualToString:str2]) { continue; }else{ NSString * temp2 = [str2 componentsSeparatedByString:@"/"].lastObject; if ([temp isEqualToString:temp2]) { NSLog(@"------------ str %@ ============= str2 %@ ---",str,str2); NSLog(@"~~~~~~~~~~~~~~~~~~~"); } } } } }else{ } }
这个程序呢有一个bug,我举例说下吧,就是第一个文件跟第十个文件重复的时候,这个结果会输出两遍。解决这个的方法呢就是当查出那两个或几个文件重名的话把他们从数组里删除。在这里面呢我有个感触,可能大部分程序员跟我差不多,想追求点高大山,追求点全面,那种语言都想尝试一下。其实效率高才是硬道理。如果本来就是玩玩的就无所谓了。
2.处理多余图片
这个呢我首先想到的就是找个第三方了,我觉得肯定是有的。因为这个问题遇到的人肯定就很多了。在群友的帮助下找到了一个东西:unused。
unused:一个开源第三方,用来检测工程里没有用到的图片。下载下来的话就是一个mac工程,自己用xcode运行一下就好了。
下载地址:http://jeffhodnett.github.io/Unused/
检测的结果还可以导出成txt文件,很好用。
当你管理图片的是Images.xcassets的话就要小心了,不要一冲动把所有检测出来的都删除了。我感觉找个软件的原理就是查找图片的名字有没有出现在你的工程代码里。你用Images.xcassets管理图片的话可以不用改图片的名字,直接拖进去就好了。这个就造成你在代码里这个图片的名字跟图片本身的名字是不一致的。例如,当美术给你图片的是随便起了名叫111.png,这个图片在Images.xcassets里叫cake.png,当你直接把这个文件拖到对应的图片位置的时候程序会111.png当做cake.png来用,但是unused是不会这么认为的,它就会把111.png当做未使用图片输出出来。