使用NSStringFromSelector(_cmd), self) 来跟踪对象的生命周期
尽管Automatic Reference Counting (ARC)已经让内存管理变得简单、省时和高效,但是在object的life-cycles中跟踪一些重要事件依然十分重要。毕竟ARC并没有完全排除内存泄露的可能性,或者试图访问一个被release的对象。为了这个目的,我们可以用一些处理方法和工具来帮助我们盯着对象正在做些什么。
LOG重要事件
Objective-C 对象的 life-cycle中有两个很重要的方法: init 和dealloc ,将这两个方法调用的事件log到console是不错的选择——你可以通过控制台观察到对象生命的开始,更重要的是,可以确保对象的释放。
1.- (id)init
2.{
3. self = [super init];
4. if (self)
5. {
6. NSLog(@"%@: %@", NSStringFromSelector(_cmd), self);
7. }
8. return self;
9.}
10.- (void)dealloc
11.{
12. NSLog(@"%@: %@", NSStringFromSelector(_cmd), self);
13.}
_cmd是隐藏的参数,代表当前方法的selector,他和self一样都是每个方法调用时都会传入的参数,动态运行时会提及如何传的这两个参数,
你在方法里加入CCLOG(@\"%@, %@\",NSStringFromSelector(_cmd),self);语句之后,执行这个方法就会输出方法的名称,
这样做是为了跟踪查看方法调用的前后顺序,或者想看看程序到底在那个方法内部崩溃的!