Предположим, что следующий код под ARC,
typedef void (^MyResponseHandler) (NSError *error);
@interface MyClass : NSObject
{
MyResponseHandler _ivarResponseHandler;
}
- (void)myMethod:(MyResponseHandler)responseHandler
{
_ivarResponseHandler = responseHandler;
...
}
Вопрос. Является ли блок автоматически скопирован в кучу при присвоении ivar?
Мой предыдущий вопрос подразумевал, что он копируется при назначении через @property
. Но сегодня я использовал приведенный выше код и получил EXC_BAD_ACCESS
, который был исправлен путем изменения на
_ivarResponseHandler = [responseHandler copy]
.