В настоящее время я изучаю быстрые сериалы stanford ios для просмотра. Лектор упомянул в первом классе, что мы не должны использовать AnyObject. Мне просто интересно, в чем причина этого? Это плохая практика кодирования? или это связано с некоторыми другими причинами? Заранее благодарю за любую помощь!Почему мы не должны использовать AnyObject?
0
A
ответ
0
AnyObject
означает любой вид класса (или типа ссылки) он похож на id
в Objective-C. Это протокол, к которому все классы неявно соответствуют.
Проблема заключается в том, что компилятор не знает, какой объект он находится во время компиляции, это означает, что вы можете легко создать приложение, которое отправляет методы на неправильный объект.
Это обычно вызывает такое исключение на NSObject
подклассах «unrecognized selector sent to instance XXXXXX
» с крахом.
Swift любит сильную печать, это действительно полезно, потому что вы можете исправить проблемы до того, как они произойдут, но если вы определяете объект как AnyObject
, это может быть все.
Смежные вопросы
- 1. Почему мы должны использовать HandleErrorAttribute?
- 2. Почему мы должны использовать EJB?
- 3. Почему мы не должны использовать ++ в javascript?
- 4. Почему мы должны выпускать?
- 5. Почему мы должны использовать TableModel для JTable?
- 6. Почему мы должны использовать xml-макеты?
- 7. Почему мы должны использовать категорию в IOS?
- 8. Почему мы должны использовать функцию QUOTENAME?
- 9. Почему мы должны использовать Invoke в .Net?
- 10. Когда мы должны использовать класс, а когда мы не должны
- 11. Почему мы должны использовать список в subprocess.Popen?
- 12. Почему мы должны использовать спящий режим весны?
- 13. Почему мы должны использовать @using с Html.BeginForm
- 14. Почему мы должны использовать свойства зависимостей?
- 15. Почему мы должны использовать литералы в C#?
- 16. Почему мы должны использовать диспетчер зависимостей?
- 17. Почему мы должны использовать $() каждый метод?
- 18. Почему мы должны использовать ключи webapi
- 19. почему мы должны WCF
- 20. Когда мы должны использовать *, &,. , ->?
- 21. Когда мы должны использовать ListCollectionView?
- 22. Почему мы не должны использовать диспетчер запросов в dopost?
- 23. Почему мы не должны использовать varchar в «sp_executesql»?
- 24. Почему мы не должны использовать собственные потоки в Jboss?
- 25. Почему мы не должны использовать синхронизацию с методом run?
- 26. Почему мы не должны использовать оба jspViewResolver и TilesViewResolver вместе?
- 27. Почему мы не должны использовать jquery в угловом?
- 28. Почему мы не должны использовать == для сравнения строк?
- 29. Когда мы должны использовать RTLD_DEEPBIND?
- 30. Должны ли мы использовать HashSet?
Более строгий тип, тем больше ошибок компилятор может уловить (и вы не сработаете во время выполнения). – HAS