我有一个派生自NSURLConnection的类。奇怪的是,description
和dealloc
在定向到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]);
答案 0 :(得分:5)
如果发生崩溃,则会有回溯。发布它。
但是,奇怪的崩溃。 [super description]
非常接近废话。 description
方法无意在生产环境中使用;是一种开发方法。
您是否覆盖了子类中的description
,是吗?
分配而不是启动另一个并没有真正做任何事情。它甚至可能不会分配任何东西。大多数类集群和许多其他类(作为实现细节)将返回alloc
上的单例,并且直到初始化才会实例化特定的子类。
哦 - NSURLConnection
不使用init
作为指定的初始化程序。它需要一个请求。更有可能的是,通过调用init
,你实际上并没有初始化类,并且由于未定义的内部状态而崩溃相当惊人。
使用initWithRequest:....