Да, он обращается к указателю после завершения метода.Если это компилируется в ARC, то objc является «сильной» ссылкой.Однако вы фабрикуете реализацию метода dealloc и, таким образом, сохраняете объект, когда он уже будет освобожден, поэтому уже слишком поздно ссылаться на него.Ваша реализация будет вызывать super, который должен на самом деле освободить объект, а затем ARC собирается освободить значение objc, но оно уже пропало, так как это получатель, то есть «self», если вы писали обычный метод dealloc.
ARC никогда не сохранит себя в обычном методе dealloc, но это то, что вы эффективно делаете.Значение «object» - это тот же указатель, но явно __unsafe_unretained, поэтому вы должны просто использовать это напрямую.Вы можете напечатать блок как NSObject * вместо id, если это поможет, но это не должно иметь значения.Или вы можете сделать ваше значение objc также __unsafe_unretained, так что ARC оставляет его в покое.Вы не хотите, чтобы ARC каким-либо образом касался значения «self» внутри блока, поскольку в этом случае вы обходите ARC назад.
В любом случае, если вы находитесь в методе dealloc объекта,никогда не сохраняйте / не освобождайте / не запускайте авто-указатель самостоятельно - это приведет к сбою.Например, вызов метода из dealloc и передача ссылки на себя - нет-нет.Вы должны быть очень осторожны с этим и точно понимать, что делает ARC, если вы играете в такие игры во время выполнения.