Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 在safari中打开url时应用程序崩溃_Iphone_Objective C_Xcode_Safari_Nsurl - Fatal编程技术网

Iphone 在safari中打开url时应用程序崩溃

Iphone 在safari中打开url时应用程序崩溃,iphone,objective-c,xcode,safari,nsurl,Iphone,Objective C,Xcode,Safari,Nsurl,我试图用以下代码在safari中打开url: - (IBAction)webButton:(id)sender { NSString *url = @"www.google.com"; url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; [[UIApplication sharedApplication]openURL:[NSURL URLWithString:url

我试图用以下代码在safari中打开url:

- (IBAction)webButton:(id)sender {

    NSString *url = @"www.google.com";

    url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

    [[UIApplication sharedApplication]openURL:[NSURL URLWithString:url]];


}
但每次应用程序崩溃时

有人有过类似的情况吗

下面是ss off crash:

更新:

这是用于打开邮件,但在sharedApplication上相同。它崩溃了

更新2: 控制台日志: argv字符**0xbffff520 *argv char*0xbffff658 **argv字符'/' argc int 1

更新3: 它调用iAction,但崩溃了。当我在根视图中尝试这段代码时,它是有效的。我添加并连接了IB按钮,一切正常

在子视图中调用UIApplication sharedApplication是否有问题?我应该用不同的方式打电话吗

更新4:

我发现问题甚至是在子视图中调用空的iAction时,所以问题显然不在UIApplication中,而是在子视图中调用iAction

- (IBAction)webButton:(id)sender {

  // empty

}
更新5:
解决方案:

如果您执行以下操作,它会崩溃吗

NSString *url = @"http://www.google.com";
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];

我相信你需要http://在那里。

如果你这样做,它会崩溃吗

NSString *url = @"http://www.google.com";
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];

我相信您需要http://在那里。

您没有提供有效的URL,URL的格式始终是scheme:


您没有提供有效的URL,URL的格式始终为scheme:



这一点也不奇怪,如果你逃跑了http://www.google.com 你会得到:http%3A%2F%2Fwww.google.com,这不是一个有效的URL。请参见下面我的答案。解决方案是@sveiungkvalbakken的方法。但它对我不起作用,我在第一篇文章中进行了更新。请看一看,你看了我的帖子了吗?您正在转义用于分隔方案、主机和参数的特殊字符,看看如何只转义URL参数的内容,而不是URL本身。我应该转义URL的哪一部分?这一点都不奇怪,如果你逃走了http://www.google.com 你会得到:http%3A%2F%2Fwww.google.com,这不是一个有效的URL。请参见下面我的答案。解决方案是@sveiungkvalbakken的方法。但它对我不起作用,我在第一篇文章中进行了更新。请看一看,你看了我的帖子了吗?您正在转义用于分隔方案、主机和参数的特殊字符,请查看如何仅转义URL参数的内容,而不是URL本身。我应该转义URL的哪一部分?我想您还有其他问题,我一直在使用同一个代码,它没有任何问题。当你编写代码时,它再次崩溃。我在子视图中调用上面的代码,也许这就是问题所在。因为当我尝试在根视图中调用此代码时,它是有效的。@crios您需要更清楚地说明您正在尝试完成什么,以及到底出了什么问题。您的更新不断更改您的问题。是的,我的更新更改了问题,因为我认为该问题存在于UIApplication中,但事实并非如此。在这一点上,我提出了一个新的问题,因为它和这个不一样。我想你还有别的地方出了问题,我一直都在使用同一个代码,但没有什么问题。它再次崩溃,你的代码无法运行。我在子视图中调用上面的代码,也许这就是问题所在。因为当我尝试在根视图中调用此代码时,它是有效的。@crios您需要更清楚地说明您正在尝试完成什么,以及到底出了什么问题。您的更新不断更改您的问题。是的,我的更新更改了问题,因为我认为该问题存在于UIApplication中,但事实并非如此。在这一点上,我提出了一个新的问题,因为它和这个不一样。在iphone上试用。崩溃到。您确定IBAction已正确连接吗?你能在webButton方法中放置一个断点以确保你进入该方法吗?是的,我进入该方法。请在更新后的第一篇帖子上打个比方。你能发布崩溃的控制台吗?我在一个帖子堆中发现了这一点:你可能需要保留URL对象。这曾经是我的问题。链接:在iphone上试用。崩溃到。您确定IBAction已正确连接吗?你能在webButton方法中放置一个断点以确保你进入该方法吗?是的,我进入该方法。请在更新后的第一篇帖子上打个比方。你能发布崩溃的控制台吗?我在一个帖子堆中发现了这一点:你可能需要保留URL对象。这曾经是我的问题。链接:
// This is correct and will work:
[[UIApplication sharedApplication] openUrl:[NSURL URLWithString:@"http://www.google.com"]]

// Updated with body and subject:
NSMutableString* url = [NSMutableString stringWithString:@"mailto:"];
[url appendString:@"first@example.com"];
[url appendFormat:@"?subject=%@", [@"Hello from Croatia" stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
[url appendFormat:@"&body=%@", [@"This is a body" stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];