Почему рекомендуется использовать _weak ссылку с делегатами
Привет всем, кто-нибудь уточнит мне, почему рекомендуется использовать _слабую ссылку для делегатов, а не строгую ссылку? хотя мы также можем использовать строгую ссылку для делегатов. Кто-то, пожалуйста, расскажет мне с лучшим и описательным примером простым способом: в каких ситуациях мы должны использовать строгую ссылку и в каких ситуациях мы должны использовать _слабую ссылку для делегатов.
Я прошел один из связанных вопросов о переполнении стека
Хорошо ли когда-нибудь иметь "сильную" ссылку на делегата?
но это не прояснило мою концепцию должным образом.
Любая помощь будет высоко оценена!
Благодарю.
2 ответа
С помощью __strong
На делегате очень легко создать сохраняющий цикл:
скажем, A имеет сильную ссылку на B, и некоторые объекты устанавливают A в качестве делегата B, если на делегат ссылаются строго, то формируется цикл сохранения.
Да, восточно создавать цикл сохранения, используя __strong для делегата.
Кроме того, в ARC мы используем слабый делегат ,, в то время как объект, использующий делегат, освобождается deleg делегат автоматически будет равен нулю.