Это действительно хороший вариант использовать ARC для IOS 4.0, где нет слабого свойства

Я работаю над проектом на базе ARC. Мой проект ориентирован на IOS 4.3. Поскольку для версии unsafe_unretained что может вызвать висячие указатели.

Теперь я думаю, действительно ли хороший вариант использовать ARC с unsafe_unretained? Или я должен вернуться к ручному управлению памятью, так как мой проект нацелен на IOS 4.3.?

Если это хороший вариант для использования ARC в моем случае, где я должен установить свойства unsafe_unretained в nil? Я видел людей, делающих это в viewDidUnload, но viewDidUnload никогда не вызывается в обычном сценарии. Любая помощь с благодарностью.

2 ответа

Решение

Это действительно хороший вариант использовать ARC [без поддержки слабых]?

Да. ARC обычно считается большим преимуществом в краткости кода, удобочитаемости и уменьшает количество ошибок, связанных с памятью. Мое личное мнение, что это главное преимущество ARC.

Приятно поддерживать слабое и еще одно преимущество ARC (на iOS 5). Но иногда __weak может скрывать ошибки, которые сразу же всплывают с __unsafe_unretained,

В моем коде всякий раз, когда я использую weak свойства или переменные я должен думать о последствиях. С другой стороны, остальная часть управления памятью ARC требует от меня меньше думать (что приятно).

Я должен использовать unsafe_unretained, который может вызвать висячие указатели.

Да, но в pre-ARC вы также использовали несохраненные указатели для слабых ссылок, так что в любом случае это не хуже того, что вы делаете сейчас.

Я также добавлю, что вы можете использовать weak при использовании iOS 4.3, если вы используете библиотеку PLWeakCompatibility: https://github.com/plausiblelabs/PLWeakCompatibility

Другие вопросы по тегам