Почему большинство объектов, которые мы создаем в iphone, являются указателями ..? как я создать NSString * ул, NSMutableDictionary * Dict .. и т.д.Почему большинство объектов, которые мы создаем в iphone, являются указателями
ответ
Короткий ответ
Поскольку Objective-C объекты могут быть выделены только на куче и манипулировать ими в качестве указателей.
Длинный ответ
Objective-C требует, чтобы классы будут выделены в куче и манипулировать как указатели, так как полиморфизм требует использования указателей, так как указатель на интерфейс всегда будет иметь тот же размер, в то время как различные реализации интерфейса могут иметь разные размеры. В C++ можно использовать как автоматическое (стек), так и динамическое (кучи) хранилище для классов; однако в первом случае следует остерегаться нарезки (когда производный тип присваивается базовому типу, в результате чего объект теряет контент, который делает его производным типом вместо базового типа), и используя указатели только как в Obj-C устраняет эту потенциальную ловушку. Кроме того, разрешенные объекты, связанные с стеком, усложняют схему подсчета ссылок, которая предусмотрена Objective-C, и поскольку объекты, связанные с стекем, живут только в области, в которой они созданы, в любом случае обычно выделяются объекты на куче, и так было бы предельной выгодой для поддержки объектов в виде значений, распределенных по стекам. В качестве примечания следует упомянуть, что как в Java, так и в C# объекты аналогичным образом ограничены распределением только кучи.
- 1. Почему мы создаем объекты, которые не имеют функциональности?
- 2. Почему мы создаем экземпляры классов?
- 3. Почему мы создаем объекты-указатели?
- 4. Почему мы создаем экземпляры классов для циклов?
- 5. Почему большинство объектов в js public?
- 6. Почему мы создаем объект с использованием отражения
- 7. Почему мы создаем переменную типа класса?
- 8. почему мы должны добавить(), когда мы создаем пустой массив
- 9. Почему мы создаем календарный класс (abstract) в Java
- 10. Почему большинство методов класса java.lang.reflect.Array являются «родными»
- 11. Linq, когда мы создаем объект
- 12. Почему мы создаем ключевые слова пользователя в рамках робота?
- 13. Почему мы создаем «window.x = x = ...» в функциях javascript?
- 14. Почему мы не создаем объект для статического метода в java?
- 15. Являются ли функции указателями злыми?
- 16. Что происходит, когда мы создаем объект интерфейса?
- 17. Почему мы обычно создаем индекс перед удалением первичного ключа?
- 18. Почему мы создаем экземпляр объекта из интерфейса вместо класса?
- 19. std :: vector - error: нельзя удалить объекты, которые не являются указателями
- 20. Почему таймер не работает, если мы не создаем окно?
- 21. pygame сортировка список объектов, которые являются строками
- 22. Эквивалент isinstance для объектов, которые являются функциями
- 23. объектов Django возвратных, которые являются атрибутами QuerySet
- 24. Являются ли трубы unix (|) и трубой, которые мы создаем, используя «pipe (int pipefd [2])» в c то же самое?
- 25. В ObjectiveC, являются указателями, которые являются переменными экземпляра класса, инициализированными «nil», или иначе?
- 26. MPI как решить, сколько процессов мы создаем
- 27. Как мы создаем jQuery mobile UI
- 28. Как мы создаем объект для черты?
- 29. Удаление Realm объектов, которые являются частью других объектов Realm
- 30. Почему мы используем #ifdef DEBUG в iphone
На самом деле вы можете (и делать, когда используете блоки) создавать объекты ObjC в стеке: http://www.mikeash.com/pyblog/friday-qa-2010-01-15-stack-and-heap-objects -в-цель-c.html – 2010-06-15 10:35:09