1

我正在尝试使用以下代码在 safari 中打开 url:

- (IBAction)webButton:(id)sender {

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

    url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

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


}

但是每次应用程序崩溃。

有人遇到过类似情况吗?

这是关闭崩溃:http ://dl.dropbox.com/u/77033905/urlInSafariCrashesUp.png

更新:

NSString *recipients = @"mailto:first@example.com?subject=Hello from Croatia!";
    NSString *body = @"&body=It is sunny in Croatia!";

    NSString *email = [NSString stringWithFormat:@"%@%@", recipients, body];
    email = [email stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

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

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

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

更新 3: 它调用 IBAction 但崩溃了。当我在根视图中尝试此代码时,它可以工作。我在 IB 按钮中添加并连接,一切正常。

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

更新 4:

我发现问题是即使我在子视图中调用空 IBAction,所以问题显然不在 UIApplication 中,而是在子视图中调用 IBAction。

- (IBAction)webButton:(id)sender {

  // empty

}

更新 5: 解决方案:如何在子视图中调用 IBAction?

4

2 回答 2

3

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

// 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]];
于 2012-05-08T20:55:33.003 回答
1

如果你做类似的事情它会崩溃吗

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

我相信你需要那里的“ http:// ”。

于 2012-05-08T20:53:35.437 回答