0
下面的代碼在捕獲UncaughtExceptions方面做得非常好 - 至少在iOS 8之前是如此。爲什麼在main.m中的@catch不會捕獲iOS中的UncaughtExceptions 8
int main(int argc, char * argv[])
{
@try {
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([MyAppDelegate class]));
}
}
@catch (NSException *exception) {
[[MyExceptionHandler sharedInstance] handleException:exception];
}
}
在iOS 7設備上運行相同的代碼,任何未捕獲的異常由main中的catch塊處理。但在iOS 8中,它根本沒有被捕獲。
如果我把這個代碼:
void onUncaughtException(NSException* exception)
{
[[MyExceptionHandler sharedInstance] handleException:exception];
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
....
NSSetUncaughtExceptionHandler(&onUncaughtException);
}
在我的AppDelegate,我可以捕獲所有異常預期。我只是想知道@ catch-in-main-approach在iOS 8中停止工作的原因是什麼(或者它可能與64位支持有關)?
問候,
基督教