假设ARC下的代码如下,
typedef void (^MyResponseHandler) (NSError *error);
@interface MyClass : NSObject
{
MyResponseHandler _ivarResponseHandler;
}
- (void)myMethod:(MyResponseHandler)responseHandler
{
_ivarResponseHandler = responseHandler;
...
}
问题:分配给 ivar 时,block 是否会自动复制到堆中?
我之前的问题暗示它在通过@property
. 但是,今天我使用了上面的代码并收到了一个EXC_BAD_ACCESS
通过更改为
_ivarResponseHandler = [responseHandler copy]
.