Как делает один доступ контроллер представления super?

Объекты, которые являются неизменяемыми, не могут изменить свое состояние после того, как они были созданы.

Существует три основных причины, по которым можно использовать неизменяемые объекты, когда это возможно, все из которых помогут уменьшить количество ошибок, которые вы вводите в свой код:

  • Гораздо проще рассуждать о том, как ваша программа работает, когда вы знаете, что состояние объекта не может быть изменено другим методом
  • Неизменяемые объекты автоматически защищены от потоков (при условии, что они опубликованы безопасно), поэтому никогда не будут причиной этих трудных для закрепления ошибки многопоточности
  • Неизменяемые объекты всегда будут иметь один и тот же хэш-код, поэтому их можно использовать в качестве ключей в HashMap (или аналогичных). Если хеш-код элемента в хеш-таблице должен был измениться, запись в таблице будет фактически потеряна, так как попытки найти его в таблице приведут к тому, что он будет искать не в том месте. Это основная причина того, что объекты String являются неизменяемыми - они часто используются в качестве ключей HashMap.

Есть также некоторые другие оптимизации, которые вы можете выполнить в коде, когда вы знаете, что состояние объекта является неизменным - например, кеширование вычисленного хэша - но это оптимизация и, следовательно, не столь интересная .

10
задан Siyual 30 June 2015 в 13:34
поделиться

1 ответ

В дополнительном контроллере попробуйте

id mainViewController = [self.view.superview nextResponder];

и проверьте, является ли это контроллер представления, который вы ищете.

Документация Apple для - [UIResponder nextResponder] :

UIView реализует этот метод, возвращая объект UIViewController, который управляет им (если он есть) или его супервизор (если нет)

32
ответ дан 3 December 2019 в 14:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: