本帖最后由 chain 于 2014-6-23 22:56 编辑
- #import <Foundation/Foundation.h>
- #import "Pesrson.h"
- Person *test()
- {
- Person *p = [Person alloc] init];
-
- return p;
- }
- int main(int argc, const char * argv[])
- {
- Person *p1 = test();
- NSLog(@"%ld",p1.retainCount);
-
-
- [p1 release];
- NSLog(@"%ld",p1.retainCount);
-
- return 0;
- }
复制代码 上述代码,我重写了dealloc方法,按道理来说,当调用test函数的时候,指针P指向了这个对象,计数器加1,并且p1也指向了这个对象,这样的话,计数器应该为2,然后P1 调用release方法,这时p还是指向这个对象啊,对象不应该被销毁啊,可是我运行程序却调用了dealloc方法,怎么回事呢?而且,如果对象调用了dealloc方法,就表示被销毁了,那么P1为什么还能调用retainCount这个方法呢?为什么不是野指针错误?求解答一下,谢谢
|
|