file: check_retain.sh
#!/bin/sh
FILES=`find . -type f | grep "\.cpp"`
for f in $FILES
do
RETAIN_COUNT=`grep -c "\
How to use:
$ cd Classes
$ check_retain
## FILE "./Scenes/LayerPlaySurvivalMode.cpp" WARNING: retain() = 3, release() = 2
29: m_session->retain();
32: m_player->retain();
322: m_activeProperty->retain();
---------------- release ----------------
90: m_session->release();
376: m_activeProperty->release();
Ok, found miss m_player~~>release.
——
中文说明:
检查 .cpp 文件中 retain 和 release 的出现次数是否一致。根据输出结果,可以更容易发现遗漏的 release 方法调用。例如上面的例子中调用了 m_player~~>retian(),却没有对应的 m_player->release()。
当然,很多时候 retain() 和 release() 的出现次数并不一样,所以不能认为输出结果就一定代表程序有问题。