Under ARC, are Blocks automatically copied when assigned to an ivar directly?
Assume the following code under ARC, typedef void (^MyResponseHandler) (NSError *error); @interface MyClass : NSObject { MyResponseHandler _ivarResponseHandler; } - (void)myMethod:(MyResponseHandler)responseHandler { _ivarResponseHandler = responseHandler; ... } Question: Is the block automatically copied to the heap when assigned to the ivar? My previous question implied that it is copied when assigned through a @property . But, today I used the above code and received an EXC_BAD_ACCESS that was fixed by changing to _ivarResponseHandler = [responseHandler copy] . Edit: My previous answer was