最近改了个代码。从一开始的一行变成了十几行。版本弄了9九次。辛苦了一群reviewer。一定要总结一下。
1. Mac的隐藏文件夹“.XXX”
在OS X系统下,.XXX路径是隐藏的。
另外在建立路径名变量的时候最好用dotXXXDirectoryPath。
2. getenv(“HOME”)
getenv() 方法返回环境变量值 NUL-terminated string.
如果该变量不存在,返回NULL.
getenv(“TEMP”)返回的是一个随机产生的临时路径,而不是/tmp
3.error for opendir()
opendir() 可能产生多种错误。路径不存ENOENT在只是其中之一。
DIR* dp = opendir(path);
if(NULL == dp){
if(ENOENT == errno) mkdir();
else log(strerror(errno));
}
4. CFStringRef对象会泄漏。要用auto_cfref<CFStringRef>。
5. !opendir后要closedir
但是注意,一定要check NULL != dp
不然closedir(dp)会crash。
6. protected member 在cpp中要继承实现。或者建立对象调用。