iphone где переменные расположены в куче - PullRequest
0 голосов
/ 22 марта 2011

Я из мира программирования микроконтроллеров, и я учусь программировать на iOS,

У меня вопрос, который меня беспокоит:

  • какзнаете физический адрес памяти, выделенной объекту?

     NSString *nombre = [[NSString alloc] initWithString:@"nombreName"];
    

как адрес гекса ??где это увидеть?

  • Насколько велика куча?можно ли увидеть кучу в начале и после выделения объектов?

Ответы [ 3 ]

0 голосов
/ 22 марта 2011

Используйте gdb для проверки объектов во время выполнения при отладке.

Я создал простой объект UIView как,

UIView *someObject = [[UIView alloc] init];

и установите точку останова на этой строке,

Переступая через эту строку, чтобы выделить память некоторого объекта, а затем запустить po или объект печати на GDB показывает шестнадцатеричный адрес этого объекта - 0x9304090.

(gdb) po someObject
<UIView: 0x9304090; frame = (0 0; 0 0); layer = <CALayer: 0x4b1b730>>

Если метод объекта description был переопределен, вы можете не увидеть шестнадцатеричный адрес. Для этих объектов просто выведите указатель

(gdb) p someObject
$2 = (UIView *) 0x9304090

или приведите его к целому числу, чтобы увидеть ячейку памяти в виде десятичной дроби.

(gdb) p (int) someObject
$3 = 154157200
0 голосов
/ 22 марта 2011

Адрес памяти объекта в вашем примере будет «nombre». Вы можете отобразить это так:

NSLog(@"nombre address is %x", nombre);

Что касается анализа проблем с кучей памяти, вам не нужно смотреть дальше XCode. Посмотрите под меню запуска. Там должна быть запись под названием «Запустить с инструментом производительности». Там вы должны найти все, что вам нужно.

0 голосов
/ 22 марта 2011

Вы можете использовать кучи для просмотра состояния кучи и профилирования вашего приложения.

Пример: http://useyourloaf.com/blog/2011/3/8/using-heapshots-to-find-abandoned-memory.html

...