iPhone应用程序在检查互联网连接时崩溃

时间:2010-11-26 12:14:09

标签: iphone cocoa-touch ios4 reachability

在我的iPhone应用程序中,我需要检测互联网连接可用性。

所以我引用Apple的“Reachability”项目中的一些文件。

链接如下:

http://developer.apple.com/library/ios/#samplecode/Reachability/Introduction/Intro.html

我创建了一个新项目并在viewWillAppear中实现了以下代码,但应用程序崩溃了。

我在Apple的演示项目中包含了Reachability.h,Reachability.m。

我还包括SystemConfiguration Framework。

当互联网工作时,

应用程序正常工作。但当互联网处于不工作状态时,应用程序崩溃。

即使我检查了控制台,但控制台中没有显示任何通知或错误。

   Reachability *r = [Reachability reachabilityWithHostName:@"www.google.com"];

NetworkStatus internetStatus = [r currentReachabilityStatus];
if ((internetStatus == ReachableViaWiFi) || (internetStatus == ReachableViaWWAN))
{
    UIAlertView *myAlert = [[UIAlertView alloc] initWithTitle:@"Internet Connection" message:@"Available" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil];
    [myAlert show];
    [myAlert release];
    }
else
{
    UIAlertView *myAlert = [[UIAlertView alloc] initWithTitle:@"No Internet Connection" message:@"This app require an internet connection via WiFi or cellular network to work." delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil];
    [myAlert show];
    [myAlert release];
    }

崩溃的原因是什么?

我该怎么办?

谢谢!

3 个答案:

答案 0 :(得分:4)

你过度发布了警报。首先,您执行autorelease,然后另外release,这太过分了。只需删除两个[myAlert release];即可。

答案 1 :(得分:1)

在这种情况下,由于超时,您的代码可能无法在模拟器上运行。但尝试在设备上运行它。也试着调试代码,因为@greg正确地说。为此,应该转到@greg。希望这可以帮助。如果有效,请告诉我。

答案 2 :(得分:0)

你的问题在你的代码的其他地方,因为你提供的代码以及复制可达性。[mh]到一个新的Xcode项目似乎没有崩溃。当您的应用崩溃时,必须在控制台中记录某种信息。如果确实没有,请在你的" startup"中设置一个断点。方法(viewWillLoadviewDidLoadAppDelegate填写并逐行逐步,直到您发现问题为止。