NSURLConnection的“描述”失败

时间:2011-08-24 15:54:22

标签: iphone objective-c ios xcode ios-simulator

我有一个派生自NSURLConnection的类。奇怪的是,descriptiondealloc在定向到NSURLConnection时失败(即使实际数据传输操作成功)。

以下是我班级的init方法:

-(id) init {
    self = [super init];
    NSLog(@"%s -- self description is %@", __PRETTY_FUNCTION__, [self description]);
    NSLog(@"%s -- super description is %@", __PRETTY_FUNCTION__, [super description]);
    return self;
}

以下是执行此代码的日志输出(我为我的类实现了description):

2011-08-24 10:41:40.493 SleepyHead[77578:207] -[BinaryExchange init] -- self description is <BinaryExchange>
(gdb) continue
Program received signal:  “EXC_BAD_ACCESS”.

发生这种情况时,调试器会在[super description]行以及NSURLConnection description的调用中停止。

到底发生了什么事?

(我尝试分配并且在此之前启动该类的另一个副本,因为有可能使用了一块虚假堆,但我仍然遇到同样的失败。 )

加了:

即使这个序列也失败了:

NSURLConnection* dummy = [[NSURLConnection alloc] init];
NSLog(@"%s -- dummy NSURLConnection description is %@", __PRETTY_FUNCTION__, [dummy description]);

1 个答案:

答案 0 :(得分:5)

如果发生崩溃,则会有回溯。发布它。

但是,奇怪的崩溃。

[super description]非常接近废话。 description方法无意在生产环境中使用;是一种开发方法。

您是否覆盖了子类中的description,是吗?

分配而不是启动另一个并没有真正做任何事情。它甚至可能不会分配任何东西。大多数类集群和许多其他类(作为实现细节)将返回alloc上的单例,并且直到初始化才会实例化特定的子类。


哦 - NSURLConnection不使用init作为指定的初始化程序。它需要一个请求。更有可能的是,通过调用init,你实际上并没有初始化类,并且由于未定义的内部状态而崩溃相当惊人。

使用initWithRequest:....