Ios 声明方法调用的内联块时发生错误访问崩溃

Ios 声明方法调用的内联块时发生错误访问崩溃,ios,automatic-ref-counting,objective-c-blocks,xcode4.5,Ios,Automatic Ref Counting,Objective C Blocks,Xcode4.5,我们正在编写一些调用枚举方法的代码: - (void)enumerateRangesOfString:(NSString*)string usingBlock:(void (^)(const NSRange range, volatile BOOL * const stop))block; 这一切都很好,直到我们切换到ARC 当我们查看调用它的代码时,如果我们唯一声明了块,则应用程序停止崩溃: id block = ^(const NSRange range, volatile BOOL *

我们正在编写一些调用枚举方法的代码:

- (void)enumerateRangesOfString:(NSString*)string usingBlock:(void (^)(const NSRange range, volatile BOOL * const stop))block;
这一切都很好,直到我们切换到ARC

当我们查看调用它的代码时,如果我们唯一声明了块,则应用程序停止崩溃:

id block = ^(const NSRange range, volatile BOOL * const stop) {
                [solutions_ addObject:object];
            };

[[puzzle_ stringForSolution:solution enumerateRangesOfString:word usingBlock:block];
当在方法调用中声明块时,应用程序崩溃。我们(我)真的不知道为什么这会解决这个问题,但我同意了,因为我不想一直把头撞在墙上

问题是,调用方法时,每个块的内联声明似乎都是如此。在我将AFNetworking库添加到应用程序后,我的应用程序不断崩溃。问题是我真的不想检查和更改这个库的所有代码,我假设我的代码有问题。当我将块声明为内联时,这个问题继续导致崩溃,而不是当我将块拉出并单独声明时


我在其他几个应用程序中使用AFNetworking。显然,我们都知道块应该可以内联声明。这让我得出结论,错误不在方法的调用中,而是在这个项目的某个地方,它正在崩溃。

我很确定问题的根本原因是,当方法返回时,块参数确实超出了范围。我的理解是,采用block参数的Apple类会立即将block_copy()放入ivar(即block foo=block_copy(parameter))。

您能显示崩溃代码吗?