最近程序在调用 NSInvokation
来获取函数返回值的时候,如果返回值是对象的话就会引起 EXC_BAD_ACCESS
崩溃。
对付 EXC_BAD_ACCESS
问题一般需要在 Edit Scheme... -> Diagnostics
中开启 Zombie Objects
选项,于是在崩溃时调实窗口打印出来了:
1 | *** -[CFString release]: message sent to deallocated instance 0x2813f0200 |
是反射出来的返回值被再次释放了。
获取返回值的代码如下:
1 | id retval; |
这里的 retval
会被释放两次,导致崩溃。