【问题标题】:Why does NSMutableURLRequest instantiation cause a crash?为什么 NSMutableURLRequest 实例化会导致崩溃?
【发布时间】:2012-10-30 23:26:10
【问题描述】:

我正在尝试像这样创建一个 NSMutableURLRequest:

NSURL *URLWithString = [
    NSString stringWithFormat:@"%@?%@",
    urlString,
    datas
];
NSMutableURLRequest* request = [[[NSMutableURLRequest alloc] initWithURL:URLWithString] autorelease];

当我在我的 iPhone 4S 上运行它时,应用程序崩溃并出现以下异常:

2012-10-30 15:58:53.495 [429:907] -[__NSCFString absoluteURL]: 无法识别的选择器发送到实例 0x1cd74a90

2012-10-30 15:58:53.497 [429:907] --- 由于未捕获而终止应用程序 异常'NSInvalidArgumentException',原因:'-[__NSCFString absoluteURL]: 无法识别的选择器发送到实例 0x1cd74a90'

--- 首先抛出调用栈:

(0x361b62a3 0x344c697f 0x361b9e07 0x361b8531 0x3610ff68 0x3611363f 0x320396e7 0x32039551 0x320394ed 0x33bde661 0x33bde597 0x387e1 0x376d9f1f 0x376da9a9 0x341c535d 0x3618b173 0x3618b117 0x36189f99 0x360fcebd 0x360fcd49 0x366392eb 0x374db301 0x37cc1 0x37c58)

libc++abi.dylib:终止调用抛出异常

怎么了?

【问题讨论】:

  • 您是否在其他代码中调用absoluteURL?崩溃告诉您您正在尝试在 NSString 实例上使用 absoluteURL 消息。

标签: objective-c nsmutableurlrequest


【解决方案1】:

很多问题: 首先了解如何调用 NSString 和 NSURL 方法。您粘贴的代码我已经完成了。

NSURL * myUrl = [NSURL URLWithString:[NSString stringWithFormat:@"%@?%@",urlString,datas]];

NSMutableURLRequest* request = [[[NSMutableURLRequest alloc] initWithURL:myUrl] autorelease];

【讨论】:

    【解决方案2】:

    您的 NSURL 创建代码错误。

    NSURL *URLWithString = [NSString stringWithFormat: @"%@?%@", urlString, datas];
    

    在这里,您尝试使用NSString class method (stringWithFormat) 直接创建一个NSURL。结果是您的变量 URLWithString 的类型错误,当您向它发送 NSURL 消息时,您会遇到类似的崩溃。

    要解决这个问题,您需要先创建一个 URL 地址的 NSString,然后使用它实例化一个 NSURL,如下所示:

    NSString *completeURLString = [NSString stringWithFormat:@"%@?%@", urlString, datas];
    NSURL *completeURL = [NSURL URLWithString: completeURLString];
    

    (从技术上讲,这两行可以合并;我已经将它们分开以明确发生了什么。)

    此外,虽然可能与您的崩溃无关,但您不应将 URL 变量称为 URLWithString,因为这是 class method of NSURL 的名称。确保为它提供一个唯一的名称,并以小写字符开头(至少,这将使您的代码更容易被其他人破译)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-23
      • 2021-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-11
      相关资源
      最近更新 更多