And*_*rei 4 iphone xcode objective-c ios
所以我有一个很棒的应用程序,可以在模拟器上或插入设备时完美运行.
然后,如果我创建一个IPA并将其部署在我的设备上,或使用TestFlight,甚至提交到App Store.当我尝试启动它时,应用程序将在大部分时间内崩溃.
即使没有符号化的崩溃报告也不会给我任何信息.
我已经使用过TestFlight,这样它可以帮助我找出应用程序崩溃的位置,但应用程序在TestFlight启动之前崩溃.
这是我的一些代码(main.m):
#import <UIKit/UIKit.h>
#import "version3contentAppDelegate.h"
int main(int argc, char *argv[]) {
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([version3contentAppDelegate class]));
}
}
Run Code Online (Sandbox Code Playgroud)
和version3contentAppDelegate.m的开头:
#import "TestFlight.h"
#import "version3contentAppDelegate.h"
#import "RootTableViewController.h"
#import "AppsFeedTableViewController.h"
#import "AboutShmoopModalViewController.h"
@implementation version3contentAppDelegate
@synthesize window, shmoopCoreData, tabBarController;
#pragma mark -
#pragma mark Application lifecycle
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
NSLog(@"applicationDidFinishLaunching");
[TestFlight takeOff:@"3f3618576288d96d598646d060a4f26a_NzUyMjEyMDEyLTAzLTI2IDE3OjIxOjQzLjgyNzQwNg"];
...
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,TestFlight代码位于didFinishLaunching的开头.这意味着如果之后它会崩溃,我会在TestFlight上发布崩溃报告,我没有.
有谁会知道为什么会这样?该项目最初是在旧的icode上开发的,用于旧的iphone,目前是一个xcode 3项目.但是我在XCode 4.3上使用iOS 5.1在设备上编程.
如果它在您的设备上崩溃,那么您将有一个崩溃日志来查看.
其次,根据我的经验,应用程序崩溃的主要原因:didFinishLaunchingWithOptions:是由于加载资源需要花费很长时间才能加载.
iOS有一个看门狗定时器,可以监视应用程序并杀死它们,如果它们花费太长时间来做某些事情.装载,卸载等通常是几秒钟,如果它们需要更长的时间,计时器会杀死它们,假设它们已挂起.
由于模拟器中的调试原因,此计时器被禁用,这就是为什么这些崩溃仅在实际设备测试期间出现的原因.
从本地设备获得崩溃日志后,请检查给出的代码,如果它是0x8badf00d,那么看门狗定时器会杀死您的应用.注意错误代码8-bad-food :-)
然后你需要查看你的代码并尽可能多地移动到后台线程,以便didFinishLaunchingWithOptions:方法可以尽快完成.
| 归档时间: |
|
| 查看次数: |
4941 次 |
| 最近记录: |