Как узнать, когда что-то расположено в стеке и в куче? Все ли локальные переменные находятся в стеке ...
Это не имеет значения. Стек и куча являются деталями реализации; языки C и Objective-C не знают о них, и у вас, как правило, не должно быть причин для беспокойства, находится ли что-то в стеке или в куче.
В Mac OS X локальные переменные находятся в стеке. Но практически для всех целей это не имеет значения. Не беспокойся об этом.
… и все ли указатели в куче?
Нет. Указатели являются адресами памяти; это все.
Указатель переменные может быть где угодно, любые другие переменные могут, то есть где угодно (с учетом ограничений, определяемых реализацией, которые вам не нужны, как отмечено выше).
См. учебник моего указателя для получения дополнительной информации.
Поскольку вы не разыменовываете указатель на объект, и этот указатель на объект имеет решающее значение в самой реализации метода. Когда вы говорите ...
Да
Указатель является адресом памяти. Таким образом, это относится к памяти по этому адресу. Разыменование указателя обращается к этой памяти.
Вы никогда не обращаетесь напрямую к памяти, которую занимает объект Какао. Вы только отправляете ему сообщения, либо задаете вопросы, либо говорите, чтобы они что-то делали. Таким образом, вы никогда не разыменовываете указатель.
«… этот указатель на объект является критическим в самой реализации метода». Означает, что объект в своих реализациях метода будет нуждаться в собственном указателе. Можно только отправить сообщение с указателем на объект (эта деталь обычно исключается). Если вы каким-то образом справитесь с этим, получатель сообщения (то есть объект, который вы отправили) не будет иметь своего собственного указателя.
Предположим, можно было отправить сообщение разыменованному объекту. Нормой по-прежнему является отправка сообщений указателям на объекты, поэтому, по всей вероятности, объект все еще будет нуждаться в этом указателе на себя, что делает эту гипотетическую способность сообщать разыменованный объект бесполезно.
Поскольку это бесполезно, они полностью его исключили. Для объекта потребуется собственный указатель (указатель важен для реализации методов объекта), поэтому вы можете только отправить сообщение указателю.