Ios 僵尸对Objective-C+有帮助吗+;?
我正在调试Objective-C++中的Ios 僵尸对Objective-C+有帮助吗+;?,ios,exc-bad-access,objective-c++,Ios,Exc Bad Access,Objective C++,我正在调试Objective-C++中的EXC\u BAD\u访问,像一个好学生一样,我已经将环境变量NSZombieEnabled设置为YES 不过,我没有收到任何僵尸,只是在日志中(gdb),然后在我的代码的不同(C++)行上EXC\u BAD\u ACCESS 问题:我使用僵尸是错误的,还是他们忽略了我的项目的C++部分? 例如: if(this->squares[i][j]==1)/僵尸非常有用,因为当您向已解除分配的对象发送消息时,它们将在调试器中标记。但是,它们仅适用于Objecti
EXC\u BAD\u访问
,像一个好学生一样,我已经将环境变量NSZombieEnabled
设置为YES
不过,我没有收到任何僵尸,只是在日志中(gdb)
,然后在我的代码的不同(C++)行上EXC\u BAD\u ACCESS
问题:我使用僵尸是错误的,还是他们忽略了我的项目的C++部分?
例如:
if(this->squares[i][j]==1)/僵尸非常有用,因为当您向已解除分配的对象发送消息时,它们将在调试器中标记。但是,它们仅适用于Objective-C代码
EXC_BAD_ACCESS
错误很棘手,因为在发生错误时,这行代码可能与错误的根本原因无关。它可能提供了一个线索
这是因为Objective-C运行时仅在驻留在特定内存块中的所有对象都已释放且符合释放条件时才会释放释放的对象
有关如何追踪这些令人讨厌的错误的详细解释和说明,请参见此处:
僵尸非常有用,因为当您向已解除分配的对象发送消息时,它们将在调试器中标记。但是,它们仅适用于Objective-C代码
EXC_BAD_ACCESS
错误很棘手,因为在发生错误时,这行代码可能与错误的根本原因无关。它可能提供了一个线索
这是因为Objective-C运行时仅在驻留在特定内存块中的所有对象都已释放且符合释放条件时才会释放释放的对象
有关如何追踪这些令人讨厌的错误的详细解释和说明,请参见此处:
我会说“不”,因为NSZombieEnabled
的实现方式与-fobjc call cxx cdtor
不兼容。这意味着,当对象从“活动”转换为“僵尸”时,带有Deconstructor的实例变量无法正确解构。在我的例子中(刚才),我从某人那里得到一份报告,在使用该技术进行调试时,我的项目在NSZombie
中中止,在研究该问题时,我跟踪到一个智能指针,该指针自动清除运行时未解构的依赖对象上的委托
我会说“不”,因为NSZombieEnabled
的实现方式与-fobjc call cxx cdtor
不兼容。这意味着,当对象从“活动”转换为“僵尸”时,带有Deconstructor的实例变量无法正确解构。在我的例子中(刚才),我从某人那里得到一份报告,在使用该技术进行调试时,我的项目在NSZombie
中中止,在研究该问题时,我跟踪到一个智能指针,该指针自动清除运行时未解构的依赖对象上的委托
僵尸只适用于objective-c对象,如果您对它们进行了过度扩展,然后向它们发送消息。在这种情况下,还有其他问题。你能给我们看一些相关的代码吗?@Pragram是的!不过,还有一个问题,所以我在这里问了:僵尸只对objective-c对象有效,如果您对它们进行了过度扩展,然后向它们发送消息。在这种情况下,还有其他问题。你能给我们看一些相关的代码吗?@Pragram是的!另外一个问题,所以我在这里问:
Thread 1, Queue : com.apple.main-thread
#0 0x00009309 in Board::draw(float, float, float, float, float) at /Developer/of_007_iphone/apps/cwi007/iTicTacToe/src/gameplay/gameBoard.cpp:53
#1 0x0000a2f1 in SuperBoard::drawBig(float, float, float) ()
#2 0x000044b8 in testApp::draw() ()
#3 0x0020fc16 in ofAppiPhoneWindow::timerLoop() ()
#4 0x00218db9 in -[ofxiPhoneAppDelegate timerLoop] ()
#5 0x00ab1749 in __NSFireTimer ()
#6 0x01f898c3 in __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ ()
#7 0x01f8ae74 in __CFRunLoopDoTimer ()
#8 0x01ee72c9 in __CFRunLoopRun ()
#9 0x01ee6840 in CFRunLoopRunSpecific ()
#10 0x01ee6761 in CFRunLoopRunInMode ()
#11 0x027651c4 in GSEventRunModal ()
#12 0x02765289 in GSEventRun ()
#13 0x00d29c93 in UIApplicationMain ()
#14 0x002106e1 in ofAppiPhoneWindow::runAppViaInfiniteLoop(ofBaseApp*) ()
#15 0x002219ae in ofRunApp(ofBaseApp*) ()
#16 0x00002fd6 in main ()