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

时间:2012-05-08 20:47:18

标签: iphone objective-c xcode safari nsurl

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

- (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: 解决方案:How to call IBAction in subview?

2 个答案:

答案 0 :(得分:3)

您没有提供有效的网址,网址的格式始终为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]];

答案 1 :(得分:1)

如果您执行类似

的操作,它会崩溃吗?
NSString *url = @"http://www.google.com";
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];

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