我正在尝试调试一些ARC代码,如果我能找到某个类的对象何时被添加到自动释放池中(而不是在轨道上实际自动释放时),那将非常有用.
这是可能的,例如断点吗?或者通过覆盖’autorelease’方法并在其中加入断点?有什么建议?
– 编辑 –
问题是我发生了一个不常发生的崩溃,其中UIView的自定义子类在后台线程上自动释放,崩溃因为UIView不能在后台线程上释放.跟踪如下所示:
0 libsystem_kernel.dylib __pthread_kill + 8 1 libsystem_c.dylib pthread_kill + 54 2 libsystem_c.dylib abort + 94 3 libc++abi.dylib abort_message + 46 4 libc++abi.dylib default_terminate() + 24 5 libobjc.A.dylib _objc_terminate + 146 6 libc++abi.dylib safe_handler_caller(void (*)()) + 76 7 libc++abi.dylib operator delete(void*) 8 libc++abi.dylib __cxa_throw + 122 9 libobjc.A.dylib objc_exception_throw + 94 10 CoreFoundation +[NSException raise:format:] 11 Foundation -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 90 12 MYAPP MySuperclass.m line 156 -[MySuperclass dealloc] 13 MYAPP MyClass.m line 41 -[MyClass dealloc] 14 ... libobjc.A.dylib _objc_rootRelease + 36 15 libobjc.A.dylib objc_release + 38 16 libobjc.A.dylib (anonymous namespace)::AutoreleasePoolPage::pop(void*) + 224 17 libobjc.A.dylib _objc_autoreleasePoolPop + 12 18 CoreFoundation _CFAutoreleasePoolPop + 18 19 libdispatch.dylib _dispatch_worker_thread2 + 338 20 libsystem_c.dylib _pthread_wqthread + 294