4

私は過去 2 週間、この問題と格闘してきました。コードを精査しても解決策が見つからなかったり、スタック オーバーフローが発生したりしています。

問題:

セルを含むtableViewを備えたView Controllerがあります。ほとんどの場合、セルの 1 つをクリックして別のビュー コントローラーにプッシュすると、正常に動作します。ただし、セルをクリックすると、アプリがフリーズすることがあります。クラッシュしません。フリーズするだけです。通常、ホームボタンを押してアプリを再度起動する必要があります。その時点で、起動に時間がかかり、アプリがクラッシュします。次に、アプリをもう一度起動すると、アプリの最初のページに正常に戻ります。

複製が難しいことがわかりました-通常の起動で正常に動作します。通常、アプリをしばらくバックグラウンドで使用していた場合、またはデバイスがロックされている場合に発生するようです。必要な変数をクリーンアップするメモリを除いて、これがどのように影響するかは完全にはわかりません。

注として、私は PrettyKit ライブラリを使用しているため、私のセルは PrettyTableViewCells です。

クラッシュレポート:

Incident Identifier: A58F4152-0593-481D-8269-1A8115739349
CrashReporter Key:   2dc2c9f2bdbc6370165a53719bc7610fcbe36ddd
Hardware Model:      iPhone4,1
Process:         Yoga [50409]
Path:            /var/mobile/Applications/DEE2950F-4629-43D4-BA6E-349E4119094F/Yoga.app/Yoga
Identifier:      Yoga
Version:         ??? (???)
Code Type:       ARM (Native)
Parent Process:  launchd [1]

Date/Time:       2013-04-23 10:41:02.152 +1000
OS Version:      iOS 6.1.3 (10B329)
Report Version:  104

Exception Type:  00000020
Exception Codes: 0x000000008badf00d
Highlighted Thread:  0

Application Specific Information:
Yoga [50409] has active assertions beyond permitted time: 
{(
    <BKProcessAssertion: 0x1f590b90> identifier: Suspending process: Yoga[50409] permittedBackgroundDuration: 10.000000 reason: suspend owner pid:26 preventSuspend  preventThrottleDownCPU  preventThrottleDownUI 
)}

Elapsed total CPU time (seconds): 8.260 (user 8.260, system 0.000), 67% CPU 
Elapsed application CPU time (seconds): 5.953, 49% CPU

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0:
0   CoreFoundation                  0x313a21fa -[__NSSetM addObject:] + 326
1   Foundation                      0x31dfd1f8 __44-[NSISEngine fixupIntegralizationViolations]_block_invoke_0 + 868
2   Foundation                      0x31dfe9a4 -[NSISEngine withoutOptimizingAtEndRunBlockWithAutomaticOptimizationDisabled:] + 104
3   Foundation                      0x31dfce8a -[NSISEngine fixupIntegralizationViolations] + 90
4   Foundation                      0x31dfe766 -[NSISEngine optimize] + 74
5   Foundation                      0x31dffc4e -[NSISEngine constraintDidChangeSuchThatMarker:shouldBeReplacedByMarkerPlusDelta:] + 82
6   Foundation                      0x31dffcc8 -[NSISEngine tryToChangeConstraintSuchThatMarker:isReplacedByMarkerPlusDelta:undoHandler:] + 56
7   Foundation                      0x31e0564e -[NSLayoutConstraint _tryToChangeContainerGeometryWithUndoHandler:] + 266
8   Foundation                      0x31e059d6 -[NSLayoutConstraint _setSymbolicConstant:constant:] + 382
9   UIKit                           0x3368e14a -[UIView(UIConstraintBasedLayout) _autoresizingConstraints_frameDidChange] + 342
10  UIKit                           0x33253c32 -[UIView(Geometry) setFrame:] + 558
11  UIKit                           0x3329ec4c -[UITableViewCellContentView setFrame:] + 48
12  Foundation                      0x31d03ff2 _NSSetRectValueAndNotify + 106
13  UIKit                           0x332a18cc -[UITableViewCellLayoutManager layoutSubviewsOfCell:] + 2188
14  UIKit                           0x332a0968 -[UITableViewCell layoutSubviews] + 56
15  UIKit                           0x332557fe -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 254
16  QuartzCore                      0x32fffd86 -[CALayer layoutSublayers] + 210
17  QuartzCore                      0x32fff924 CA::Layer::layout_if_needed(CA::Transaction*) + 456
18  QuartzCore                      0x33000858 CA::Layer::layout_and_display_if_needed(CA::Transaction*) + 12
19  QuartzCore                      0x3300023e CA::Context::commit_transaction(CA::Transaction*) + 234
20  QuartzCore                      0x3300004c CA::Transaction::commit() + 312
21  QuartzCore                      0x32fffeac CA::Transaction::observer_callback(__CFRunLoopObserver*, unsigned long, void*) + 56
22  CoreFoundation                  0x3141f6ca __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 18
23  CoreFoundation                  0x3141d9bc __CFRunLoopDoObservers + 272
24  CoreFoundation                  0x3141dd12 __CFRunLoopRun + 738
25  CoreFoundation                  0x31390eb8 CFRunLoopRunSpecific + 352
26  CoreFoundation                  0x31390d44 CFRunLoopRunInMode + 100
27  GraphicsServices                0x34f692e6 GSEventRunModal + 70
28  UIKit                           0x332a62fc UIApplicationMain + 1116
29  Yoga                            0x000af198 0xae000 + 4504
30  libdyld.dylib                   0x395a9b1c start + 0

Thread 1 name:  Dispatch queue: com.apple.libdispatch-manager
Thread 1:
0   libsystem_kernel.dylib          0x39660648 kevent64 + 24
1   libdispatch.dylib               0x39590974 _dispatch_mgr_invoke + 792
2   libdispatch.dylib               0x39590654 _dispatch_mgr_thread$VARIANT$mp + 32

Thread 2 name:  WebThread
Thread 2:
0   libsystem_kernel.dylib          0x396700fc __psynch_mutexwait + 24
1   libsystem_c.dylib               0x395b9124 pthread_mutex_lock + 388
2   WebCore                         0x373a6418 _WebTryThreadLock(bool) + 184
3   WebCore                         0x373a634a WebRunLoopLock(__CFRunLoopObserver*, unsigned long, void*) + 42
4   CoreFoundation                  0x3141f6ca __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 18
5   CoreFoundation                  0x3141d9bc __CFRunLoopDoObservers + 272
6   CoreFoundation                  0x3141dde8 __CFRunLoopRun + 952
7   CoreFoundation                  0x31390eb8 CFRunLoopRunSpecific + 352
8   CoreFoundation                  0x31390d44 CFRunLoopRunInMode + 100
9   WebCore                         0x373a4500 RunWebThread(void*) + 440
10  libsystem_c.dylib               0x395c930e _pthread_start + 306
11  libsystem_c.dylib               0x395c91d4 thread_start + 4

Thread 3 name:  com.apple.NSURLConnectionLoader
Thread 3:
0   libsystem_kernel.dylib          0x3965feb4 mach_msg_trap + 20
1   libsystem_kernel.dylib          0x39660048 mach_msg + 36
2   CoreFoundation                  0x3141f040 __CFRunLoopServiceMachPort + 124
3   CoreFoundation                  0x3141dd9e __CFRunLoopRun + 878
4   CoreFoundation                  0x31390eb8 CFRunLoopRunSpecific + 352
5   CoreFoundation                  0x31390d44 CFRunLoopRunInMode + 100
6   Foundation                      0x31cdd3d0 +[NSURLConnection(Loader) _resourceLoadLoop:] + 304
7   Foundation                      0x31d60e80 __NSThread__main__ + 968
8   libsystem_c.dylib               0x395c930e _pthread_start + 306
9   libsystem_c.dylib               0x395c91d4 thread_start + 4

Thread 4 name:  com.apple.CFSocket.private
Thread 4:
0   libsystem_kernel.dylib          0x39670594 __select + 20
1   CoreFoundation                  0x314231f2 __CFSocketManager + 674
2   libsystem_c.dylib               0x395c930e _pthread_start + 306
3   libsystem_c.dylib               0x395c91d4 thread_start + 4

Thread 5 name:  JavaScriptCore::BlockFree
Thread 5:
0   libsystem_kernel.dylib          0x3967008c __psynch_cvwait + 24
1   libsystem_c.dylib               0x395c1d2a _pthread_cond_wait + 642
2   libsystem_c.dylib               0x395c1aa0 pthread_cond_timedwait + 40
3   JavaScriptCore                  0x3535fc70 WTF::ThreadCondition::timedWait(WTF::Mutex&, double) + 104
4   JavaScriptCore                  0x35471552 JSC::BlockAllocator::blockFreeingThreadMain() + 78
5   JavaScriptCore                  0x35483fa8 WTF::wtfThreadEntryPoint(void*) + 12
6   libsystem_c.dylib               0x395c930e _pthread_start + 306
7   libsystem_c.dylib               0x395c91d4 thread_start + 4

Thread 6 name:  JavaScriptCore::Marking
Thread 6:
0   libsystem_kernel.dylib          0x3967008c __psynch_cvwait + 24
1   libsystem_c.dylib               0x395c1d2a _pthread_cond_wait + 642
2   libsystem_c.dylib               0x395cbf14 pthread_cond_wait + 36
3   JavaScriptCore                  0x35404f3c JSC::SlotVisitor::drainFromShared(JSC::SlotVisitor::SharedDrainMode) + 144
4   JavaScriptCore                  0x35404e7c JSC::MarkStackThreadSharedData::markingThreadMain() + 140
5   JavaScriptCore                  0x35483fa8 WTF::wtfThreadEntryPoint(void*) + 12
6   libsystem_c.dylib               0x395c930e _pthread_start + 306
7   libsystem_c.dylib               0x395c91d4 thread_start + 4

Thread 7 name:  WebCore: CFNetwork Loader
Thread 7:
0   libsystem_kernel.dylib          0x3965feb4 mach_msg_trap + 20
1   libsystem_kernel.dylib          0x39660048 mach_msg + 36
2   CoreFoundation                  0x3141f040 __CFRunLoopServiceMachPort + 124
3   CoreFoundation                  0x3141dd9e __CFRunLoopRun + 878
4   CoreFoundation                  0x31390eb8 CFRunLoopRunSpecific + 352
5   CoreFoundation                  0x31390d44 CFRunLoopRunInMode + 100
6   WebCore                         0x3743ed02 WebCore::runLoaderThread(void*) + 138
7   JavaScriptCore                  0x35483fa8 WTF::wtfThreadEntryPoint(void*) + 12
8   libsystem_c.dylib               0x395c930e _pthread_start + 306
9   libsystem_c.dylib               0x395c91d4 thread_start + 4

Unknown thread crashed with unknown flavor: 5, state_count: 1

コード:

フリーズする前に、コードが didSelectRowAtIndexPath メソッドと prepareForSegue メソッドを正常に通過したことをログから確認しました。したがって、テーブルセルの構造と関係があると思いますか? または、私が対処していないメモリの問題ですか?

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [self performSegueWithIdentifier:@"logPracticeDetails" sender:indexPath];
    [self.tableView deselectRowAtIndexPath:indexPath animated:YES];
}


- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    NSIndexPath *indexPath = sender;

    if ([segue.identifier isEqualToString:@"logPracticeDetails"])
    {
        YLLogPracticeViewController *controller = segue.destinationViewController;
        controller.logPractice = [self.logEntry.logEntryPractices objectAtIndex:indexPath.row];
    }
}

どんな助けでも大歓迎です。

4

2 に答える 2