Я уверен, что это на 100% безопасно, но я не хочу ничего пропустить. У меня есть следующий код
- (void) scheduleControlSurfaceProcess {
[self.operationQueueForMessageProcessing addOperationWithBlock:^{
// do something
[self scheduleControlSurfaceProcess];
}];
}
, где я - это Синглтон. Блок прекрасно работает как не основной поток. Я не вижу проблем с памятью в профилировщике (которому я не очень доверяю).
Итак, могу я проигнорировать предупреждение: «Блок будет удерживаться объектом, сильно удерживаемым захваченным объектом?» Если нет, то как я могу настаивать на том, чтобы блок был освобожден (с ARC) ? Получить предупреждение об удалении достаточно легко, но назначение id what = self
кажется, что это не решит проблему.
РЕДАКТИРОВАТЬ : как я понял довольно поздно в этом вопросе, реальная проблема здесь заключалась в том, что я перенесен изнутри самого блока. Это, очевидно, проблематично, потому что каждый блок сохраняет следующий.
ПРИМЕЧАНИЕ: Я знаю, что много вопросов по этой теме , но я не достаточно опытен, чтобы знать, какие ситуации, если таковые имеются, похожи на эту .