Вопрос

Я погружаюсь в Objective-C и Cocoa (знаю, наверное, поздно, но мне нужно с чего-то начинать) и заметил, что все объекты выделяются из кучи.

Есть ли причина, по которой это стандарт в Objective-C?Я пробовал искать везде (и да, даже на StackOverflow), но не смог найти никакой явной причины, кроме «так оно и есть».Мне это особенно интересно, потому что Objective-C считается строгим расширенным набором C с объектно-ориентированными функциями.

Если я пропустил статью о ИнтерБлаг или сообщение на StackOverflow по ошибке на эту тему, инициируйте плавное завершение работы.:)

Это было полезно?

Решение

Я думаю, что это связано с наследием Smalltalk.

Кроме того, можно сказать, что объекты, выделяемые в стеке, являются особенностью C++.Очень немногие другие языки делают это, и то в основном в качестве низкоуровневой оптимизации для компилятора.В C++ это разумно, поскольку одной из заявленных целей было точно такой же производительный, как обычный C.

Почему вы считаете, что это противоречит тому факту, что Objective-C является расширенным набором C?В конце концов, простой C не может размещать объекты в стеке...ни где. structs, OTOH, разрешены в стеке как на C, так и на Objective-C.

Другие советы

Я не совсем отвечаю на ваш вопрос, но, поскольку вы понимаете среду выполнения Obj-C, вот оно.Вы можете более эффективно распределять объекты, используя NSZones.У вас не будет их в стеке, но, по крайней мере, вы сможете избежать некоторых проблем с фрагментацией и производительностью:текст ссылки

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top