最近程序在调用 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 会被释放两次,导致崩溃。

