基于Xcode 4构建的应用程序,基本IOS等级为4及以上,在各种IPhone上进行测试。应用中的信息是从JSON Feed加载的。iOS Iphone应用程序无限期地随机挂起
在我试图追查发生了什么我已经多次通过这个程序,有一些看法,整体没有什么惊人的或新的在它尽可能的应用程序去一个相当基本的一个调试。
的问题表现偶尔,有很多在我们测试它一直是,如果我们已经关闭WiFi进行测试蜂窝连接加载时,应用程序将挂起的时间。
会发生什么情况是,在启动画面出现,就好像它加载广告的白色纺纱活动轮旋转(广告被显示为整个装载过程的一部分),但它只是坐在那里打转。
那么,最明显的问题是广告的问题?它是大还是慢加载?不,JSOn feed是快速的(我们每次检查应用程序挂起和中间时间以确保它的全部加载正常),广告大概是20k。
调试变得尽可能的didFinishLaunchingWithOptions方法,我将在下面列出,达到该方法的结束和调试器基本上是报告没有别的。它只是坐在那里,在XCode调试导航器中没有任何可见的,没有中断点击。
如果通过该方法的步骤,一旦它达到最终它进入编译代码约6-7步骤,然后简单地做同样的事情。
下面是该方法的代码:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions {
[self loadData];
splashViewController = [[OurSplashViewController alloc] initWithNibName:nil bundle:nil];
splashViewController.delegate = self;
OurWebViewController *webViewController = (OurWebViewController *)[[[tabBarController viewControllers] objectAtIndex:2] topViewController];
webViewController.url = [NSURL URLWithString:@"http://m.testURL.com/this_app/"];
webViewController.path = @"/MyPath/Sample";
[window addSubview:splashViewController.view];
[window makeKeyAndVisible];
return YES;
}
因此,它得到了“YES”这个方法,然后调试帆断成1和0的土地,报告没有回来,挂在应用程序。
有没有人有任何想法可能会造成这种情况?
UPDATE:
似乎已经分离出吊归结到发送一个JSON调用,但没有得到回应。所以我的代码应该在一段时间后处理。
这里的JSON代码,也许有人可以看到我丢失的东西在里面:
- (void)fetchWithURL:(NSURL *)URL {
if (!URL) {
return;
}
self.jsonURL = URL;
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:self.jsonURL];
if (timeout) {
[request setTimeoutInterval:timeout];
}
[request addValue:@"gzip" forHTTPHeaderField:@"Accept-Encoding"];
connection_ = [[NSURLConnection alloc] initWithRequest:request
delegate:self
startImmediately:YES];
[request release];
if (connection_ != nil) {
if ([self.delegate respondsToSelector:@selector(JSONFetchWillBeginDownload:)]) {
[self.delegate JSONFetchWillBeginDownload:self];
}
receivedData_ = [[NSMutableData alloc] initWithCapacity:0];
} else {
if ([self.delegate respondsToSelector:@selector(JSONFetch:downloadDidFailWithError:)]) {
[self.delegate JSONFetch:self downloadDidFailWithError:[NSError errorWithDomain:NSURLErrorDomain code:NSURLErrorUnknown userInfo:nil]];
}
}
}
据查尔斯的失败响应的原因是:
客户端接收整个响应前关闭连接
我在想我的超时时间是否太短?
这是为了在本地机器上进行调试吗?不幸的是,它很少发生在本地,主要是在实际的IPhone上进行测试。 –
不,Charles可以同时用于实际设备和模拟器内部。试试吧,它对你来说会很有价值! – Till
转到*帮助|本地IP地址.. *在查尔斯确定您的本地IP地址。然后打开设备上的设置应用程序,然后转到* Wi-Fi *并点击网络公开箭头。在* HTTP代理*下,选择*手动*,将IP地址放入服务器字段,查询的默认端口为8888.确保在查尔斯的代理菜单中没有选择* Mac OS X代理*,因为这样会只需使用本地计算机的请求来处理日志记录即可。 – Jim