在头文件.h中
@interface MemoryAppDelegate:NSObject <UIApplicationDelegate> {
Class1 *class1_obj;
}在实现文件.m中
@implementation Memory : (UIApplication*) application
{
NSLog(@"Retain Count of class1_obj %d",[class1_obj retainCount]); //ouput retainCount is 0
Class2 *class2_obj;
NSLog(@"Retain Count of class2_obj %d",[class2_obj retainCount]); // gives EXC_Bad_Access error与上面的代码一样,当我在头文件中声明一个对象并试图访问它的保留计数时,我得到的结果是0。但是如果我在实现文件中声明这个对象并访问它的retainCount,它就会抛出Bad_Access。您能告诉我为什么会发生这个错误吗?
发布于 2011-04-26 18:20:29
我不知道你为什么要这么做,但是这段代码:
Class2 *class2_obj;
NSLog(@"Retain Count of class2_obj %d",[class2_obj retainCount]); // gives EXC_Bad_Access error只创建指向特定类型对象的指针,而不是实际创建实例。所以访问它并询问它的retainCount (你一开始就不应该这样做)将导致有效的崩溃。因为它还不是一个有效的对象。请先尝试初始化它。
更新:如果你坚持这样做,这里有一些可能有效的方法
Class2 *class2_obj = [[Class2 alloc] init];
NSLog(@"Retain Count of class2_obj %d",[class2_obj retainCount]); // gives retain count of 1
[class2_obj release];https://stackoverflow.com/questions/5788885
复制相似问题