NSURLConnection的"描述"失败

Hot*_*cks 5 iphone xcode objective-c ios ios-simulator

我有一个派生自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;
}
Run Code Online (Sandbox Code Playgroud)

这是执行此代码的日志输出(我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”.
Run Code Online (Sandbox Code Playgroud)

发生这种情况时,调试器[super description]在线路上停止,并在调用中停止NSURLConnection description.

到底他妈发生了什么?

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

添加:

即使这个序列失败了:

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

bbu*_*bum 5

如果发生崩溃,则会有回溯.发表它.

但是,奇怪的崩溃.

[super description]非常接近废话.该description方法不能用于生产环境; 是一种开发方法.

您是否description在子类中重写了?

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


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

使用 initWithRequest:....

  • 同意; 如果`init`对`NSURLConnection`不起作用,它应该适当地进行barf.请提交一个错误. (2认同)