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

