Нужен лучший совет здесь ...
Приложение на основе навигации. Корневое представление - это UITableView, где пользователь может детализировать UIViewController (назовите его VC1). Пользователь хочет инициировать какую-то задачу, но может потребовать дополнительную информацию, прежде чем она сможет продолжить. Если это так, то VC1 выделяет и представляет модальный VC2, используя «перевернутый» переход, содержащий сильную ссылку на VC2 в свойстве.
Все довольно стандартно. Вот где у меня проблемы. Как только пользователь заполняет необходимую информацию в VC2, приложение может перейти к MFMailComposeViewController
или вернуться к VC1. Если они продолжают работать с MailCompose, то после этого он должен вернуться к VC1.
VC2 имеет слабую ссылку на VC1, и проблема возникает, когда VC2 пытается отклониться и представить MFMailComposeViewController
:
[self dismissModalViewControllerAnimated:YES];
[VC1 performSelector:@selector(showMailModalView) withObject:nil afterDelay:0.2];
Я получаю EXC_BAD_ACCESS на VC1, потому что, очевидно, моя слабая ссылка на VC1 уже отменена, хотя VC1 имеет сильную ссылку на VC2!?!
Так что мой вопрос ... как с этим обращаться? Будет ли модель делегата лучше? Как это будет вызвано?
Примечание: VC1 довольно большой, и VC2 часто не требуется, поэтому я стараюсь держать VC2 как можно более отделенным от VC1 (включая его собственный NIB).