Будут ли какие-либо преимущества при использовании NSClassFromString? Особенно при сравнении со стандартным способом импорта класса из заголовка и инициализации.Производительность NSClassFromString
ответ
Совсем нет. Во всяком случае, NSClassFromString
медленнее, чем обычный способ использования класса!
Я не вижу, как вы можете думать, что использование NSStringFromClass()
является альтернативой импортированию объявления класса и разрешает компилятору выполнять эту работу.
Учитывая, что компилятор не увидит объявление, объект будет рядом с бесполезным, и вы будете вынуждены преобразовывать строки в селекторы, чтобы иметь возможность их вызывать.
Это, конечно, не будет быстрее, чем импорт объявления через файл заголовка.
NSClassFromString - это команда времени выполнения, которая означает, что во время выполнения будет выполнена выборка в «базе данных», чтобы найти загруженный класс, соответствующий данному имени. Во-первых, не рекомендуется использовать его, когда вы можете использовать шаблон шаблона #import (который будет выполнять выборку во время компиляции, чтобы конечный пользователь этого не заметил). это обеспечит меньшую безопасность кода, что может привести к «очень трудным для отладки». Возможно, наступит время, когда оно вам понадобится, например, при создании класса во время выполнения или при попытке проанализировать json-объект или словари конкретному классу.
- 1. MonoTouch NSClassFromString
- 2. Вопрос NSClassFromString
- 3. Realm + NSClassFromString
- 4. «NSClassFromString» недействителен в c99
- 5. NSClassFromString - не работает
- 6. NSClassFromString in Swift 2.1
- 7. Пользовательский инициалист из NSClassFromString
- 8. NSClassFromString возвращает nil
- 9. NSClassFromString Case Insensitive Objective-C
- 10. NSClassFromString с использованием файла Swift
- 11. NSClassFromString Не работает Необязательные значения
- 12. Пользовательский класс NSClassFromString для cocos2dx
- 13. NSClassFromString не полностью динамический - Swift2
- 14. Swift 3 преобразования NSClassFromString хочет "" Seperator
- 15. Как преобразовать этот код NSClassFromString в Swift?
- 16. EXC_BAD_ACCESS на NSClassFromString, когда класс не существует
- 17. Есть ли способ использовать GrowlApplicationBridge без NSClassFromString?
- 18. Заводской шаблон метода в Objective C: NSClassFromString()
- 19. Может ли NSClassFromString использовать в App Store?
- 20. Получить NSClassFromString из массива строк - Swift
- 21. NSClassFromString и кэширование Сбой в классе
- 22. Binding iOS Library - СоответствуетToProtocol failing при вызове после NSClassFromString
- 23. Можно ли создать динамическое приложение с помощью NSClassFromString()?
- 24. Использование класса NSClassFromString() в объявленном классе Swift требует полного имени
- 25. NSClassFromString() возвращает класс, даже если класс не должен быть доступен
- 26. NSClassFromString (@ "MPMoviePlayerViewController") возвращает non nil EVEN на 3.1.3 (iPhone)
- 27. Поддержка версий iOS до 4.0/3.2 и проблем с NSClassFromString
- 28. Swift: NSClassFromString и NSStringFromClass ведут себя различно для NSManagedObjects
- 29. Почему NSClassFromString возвращает нуль или нет в этих двух случаях?
- 30. NSClassFromString хорошо работает в ОС, но врезается в Swift
Можете ли вы указать, что делает его более медленным, чем обычный способ использования класса? – Vivek
@Vivek - просто сделайте бенчмарк;) Я просто знаю, что внутренности ob ObjC довольно хорошо, а 'NSClassFromString' должен быть медленнее, чем обычный, потому что он просто делает гораздо больше работы. Вы можете посмотреть на разборку, чтобы увидеть это. – Michael
@Vivek, если вы обычно используете класс, имя разрешается при загрузке; когда вы используете 'NSClassFromString', класс разрешается во время выполнения. Furhtermore, разработчики ObjC были довольно умны: если 'NSClassFromString' были быстрее, тогда компилятор генерировал бы вызовы NSClassFromString' всякий раз, когда вы используете класс, вместо того, чтобы делать то, что он делает сейчас. – Michael