问题描述:在开启ARC的项目中,使用反射如下代码时,
NSObject *value = nil;
[invocation invoke];
[invocation getReturnValue:&value];
在最后一句,调用 getReturnValue 时,程序会Crash掉,打开 Edit Schema -》Diagnostic -》Enable Zombie Objects 选中,在调试窗口会看到如下信息:-[CFString release]: message sent to deallocated instance 0x78e57c20 。如果关掉ARC,即使用MRC,则运行正常,程序不会Crash掉。
原因分析:getReturnValue 对ARC支持不够好,有bug。
解决方案:将第一句:NSObject *value=nil ; 修改为: __autoreleaseing NSObject *value=nil; 即可。 运行,一切正常。