TTURLRequest在adhoc发布时失败,但在其他方面取得了成功

时间:2010-10-20 22:44:42

标签: iphone debugging adhoc

我在adhoc模式下看到两个不同设备(iphone 3g和ipod touch)发生以下崩溃,尽管在这些设备的调试模式下构建时似乎没问题。它在iPhone 4上也似乎没问题。

这是我在ad hoc模式下获得的堆栈跟踪:

https://gist.github.com/af5ea32f2dacc795387e

据我所知,这个堆栈跟踪产生了对requestWithURL的递归调用:delegate: - 尽管它在代码中没有进行这样的调用:

///////////////////////////////////////////////////////////////////////////////////////////////////
+ (TTURLRequest*)requestWithURL:(NSString*)URL delegate:(id /*<TTURLRequestDelegate>*/)delegate {
  return [[[TTURLRequest alloc] initWithURL:URL delegate:delegate] autorelease];
}

那么这里发生了什么?我该如何进一步调试?

1 个答案:

答案 0 :(得分:1)

从堆栈跟踪(第8行)看起来有些东西正在调用未定义的函数

8   CoreFoundation                  0x000a5b28 -[NSObject(NSObject)    doesNotRecognizeSelector:] + 8
9   CoreFoundation                  0x0004ae00 ___forwarding___ + 500
10  CoreFoundation                  0x0004abb8 _CF_forwarding_prep_0 + 40
11  App                         0x0005684a +[TTURLRequest requestWithURL:delegate:] + 42
12  App                         0x00056840 +[TTURLRequest requestWithURL:delegate:] + 32

首先添加一些打印语句以查看哪个函数调用是罪犯,使用:

[object doesRespondToSelector:@selector(someFunction:withArg :)]

如果您的代码不是调用未定义的函数,请确保传入的参数有效,请打印出 URL 委托的值确保它们确实具有预期的类型和价值。最重要的是确保委托确实响应 TTURLRequest 将传递给它的任何消息

此外,您的课程是 TTURLRequest ,您是否可以提供完整定义,是否会扩展另一个课程,是否定义了'initWithURL'?我们能看到来源吗?对于试图调试代码的人来说,这些都是重要的问题。