升级到iOS7后应用程序崩溃。

10 浏览
0 Comments

升级到iOS7后应用程序崩溃。

我已经将我的应用程序更新到IOS7,现在我遇到了一个非常奇怪的问题。

当我启动应用程序时,它开始执行它应该执行的操作,但是在3-5分钟后应用程序停止工作。
但不完全停止。它停止发送通知,跟踪位置等。

如果我尝试执行某些操作,控制台会显示以下内容:

*** First throw call stack:
(
    0   CoreFoundation                      0x0305f5e4 __exceptionPreprocess + 180
    1   libobjc.A.dylib                     0x0276e8b6 objc_exception_throw + 44
    2   CoreFoundation                      0x0305f3bb +[NSException raise:format:] + 139
    3   UIKit                               0x0157465c -[UINib instantiateWithOwner:options:] + 951
    4   UIKit                               0x013e6c95 -[UIViewController _loadViewFromNibNamed:bundle:] + 280
    5   UIKit                               0x013e743d -[UIViewController loadView] + 302
    6   UIKit                               0x013e773e -[UIViewController loadViewIfRequired] + 78
    7   UIKit                               0x0140d1a5 -[UINavigationController _layoutViewController:] + 39
    8   UIKit                               0x0140d6bb -[UINavigationController _updateScrollViewFromViewController:toViewController:] + 235
    9   UIKit                               0x0140d7b3 -[UINavigationController _startTransition:fromViewController:toViewController:] + 78
    10  UIKit                               0x0140e72c -[UINavigationController _startDeferredTransitionIfNeeded:] + 645
    11  UIKit                               0x0140f349 -[UINavigationController __viewWillLayoutSubviews] + 57
    12  UIKit                               0x0154839d -[UILayoutContainerView layoutSubviews] + 213
    13  UIKit                               0x0cf0656f -[UILayoutContainerViewAccessibility(SafeCategory) layoutSubviews] + 50
    14  UIKit                               0x0133edd7 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 355
    15  libobjc.A.dylib                     0x0278081f -[NSObject performSelector:withObject:] + 70
    16  QuartzCore                          0x00ef972a -[CALayer layoutSublayers] + 148
    17  QuartzCore                          0x00eed514 _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 380
    18  QuartzCore                          0x00eed380 _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 26
    19  QuartzCore                          0x00e55156 _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 294
    20  QuartzCore                          0x00e564e1 _ZN2CA11Transaction6commitEv + 393
    21  QuartzCore                          0x00f12870 +[CATransaction flush] + 52
    22  UIKit                               0x012f0979 _afterCACommitHandler + 131
    23  CoreFoundation                      0x0302753e __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 30
    24  CoreFoundation                      0x0302748f __CFRunLoopDoObservers + 399
    25  CoreFoundation                      0x030053b4 __CFRunLoopRun + 1076
    26  CoreFoundation                      0x03004b33 CFRunLoopRunSpecific + 467
    27  CoreFoundation                      0x0300494b CFRunLoopRunInMode + 123
    28  GraphicsServices                    0x03ce89d7 GSEventRunModal + 192
    29  GraphicsServices                    0x03ce87fe GSEventRun + 104
    30  UIKit                               0x012d494b UIApplicationMain + 1225
    31  MyApp                           0x0000759d main + 141
    32  libdyld.dylib                       0x02c53725 start + 0
    33  ???                                 0x00000001 0x0 + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException

你有什么想法这是什么问题吗?

在IOS6上应用程序运行良好。

0
0 Comments

应用在更新到IOS7后崩溃了,出现这个问题的原因是每次刷新视图中的标签时,都会打开一个新的连接到sqlite来获取数据。在IOS7中,这样做会导致错误,所以我将数据访问类的实例化放在了viewDidLoad()方法中,现在它可以正常工作了。如果经过测试确认我是正确的,我将确保我的数据访问类是单例模式。

// 在viewDidLoad()方法中实例化数据访问类

- (void)viewDidLoad {

[super viewDidLoad];

DataAccessClass *dataAccess = [[DataAccessClass alloc] init];

}

// 刷新视图中的标签

- (void)refreshLabels {

// 打开sqlite连接获取数据

DataAccessClass *dataAccess = [[DataAccessClass alloc] init];

// 刷新标签

// ...

// 关闭sqlite连接

}

0
0 Comments

应用在更新到IOS7后崩溃的问题出现的原因可能是由于系统中的[UINib instantiateWithOwner:options:]方法引发了异常。这个方法是系统调用的,如果是这个方法引发了异常,那么苹果可能出现了严重的错误。但是,这个错误与该方法无关,如果与该方法有关,那么应该已经向苹果报告了。这个方法仅仅是引发异常的方法,可能是开发者代码中的某个触发点导致了异常。这个问题只发生在一个视图上,检查了所有的IBOutlets都没有问题。建议创建一个异常断点,在异常被引发时调试器会停止,然后可以逐步排查问题。在调试器中查看了异常的堆栈,发现应该是在3分钟后无法访问本地sqlite数据库导致的。当试图打开需要访问数据库的另一个视图时,应用程序崩溃了。

0