在我的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];
}
崩溃的原因是什么?
我该怎么办?
谢谢!
答案 0 :(得分:4)
你过度发布了警报。首先,您执行autorelease
,然后另外release
,这太过分了。只需删除两个[myAlert release];
即可。
答案 1 :(得分:1)
在这种情况下,由于超时,您的代码可能无法在模拟器上运行。但尝试在设备上运行它。也试着调试代码,因为@greg正确地说。为此,应该转到@greg。希望这可以帮助。如果有效,请告诉我。
答案 2 :(得分:0)
你的问题在你的代码的其他地方,因为你提供的代码以及复制可达性。[mh]到一个新的Xcode项目似乎没有崩溃。当您的应用崩溃时,必须在控制台中记录某种信息。如果确实没有,请在你的" startup"中设置一个断点。方法(viewWillLoad
,viewDidLoad
,AppDelegate
填写并逐行逐步,直到您发现问题为止。