Атрибут «id» назначает идентификатор для ассоциированного элемента. Этот идентификатор должен быть уникальным в документе и может использоваться для ссылки на этот элемент.
проверьте ссылки ниже
Вы узнаете, что это за объект, когда взломаете отладчик. Просто посмотрите стек вызовов, и вы найдете, где его освободить. Это скажет вам, какой это объект.
Самый простой способ установить точку останова - это:
- Перейти к выполнению -> Показать -> Точки останова ( ALT - Команда - B )
- Прокрутите список до конца и добавьте символ
malloc_error_break
В Xcode щелкните слева от номера строки, чтобы установить точку останова. Затем вы можете запустить его, выполнив «Сборку и отладку».
Рекомендуется, чтобы создаваемый вами объект не был автозапуском
, поскольку память на iPhone является обычным делом. Apple рекомендует явно вызывать выпуск
.
Откройте консоль отладчика, нажав Cmd + Shift + R. Там введите
break malloc_error_break
, чтобы установить точку останова в начале функции malloc_error_break
.
Если вы хотите узнать, какой объект расположен по адресу 0x1068310, вы можете ввести следующее в консоли отладчика :
print-object 0x1068310
Конечно, вы должны делать это, пока объект еще жив - если объект уже был освобожден к тому времени, когда вы это сделаете, то это не сработает.
Когда объект "дважды освобожден", наиболее распространенной причиной является то, что вы (без необходимости) освобождаете автоматически освобожденный объект, а позже он автоматически освобождается, когда содержащий автозапуск пул очищается.
Я обнаружил, что лучший способ отследить дополнительный выпуск - использовать переменную среды NSZombieEnabled для затронутого исполняемого файла в Xcode. Краткое изложение того, как его использовать, можно найти на этой вики-странице CocoaDev . (В дополнение к этой странице Apple задокументировала несколько невероятно непонятных, но полезных советов по отладке кода в Xcode, некоторые из которых спасли меня более чем несколько раз. Я предлагаю проверить эту Техническую заметку для разработчиков .apple.com - ссылка переходит в раздел, посвященный структуре Cocoa Foundation).
Изменить: Вы часто можете отследить объект-нарушитель в отладчике Xcode, но часто это намного проще, если вы используете инструменты, чтобы помочь вам. В Xcode выберите Выполнить → Начать с инструментом производительности → Размещение объектов , и вы сможете отследить объект-нарушитель до того места, где он был создан. (Это будет работать лучше всего, если вы включите зомби, как описано выше.) Примечание: Snow Leopard добавляет инструмент «Зомби» в Инструменты, доступный также из меню «Выполнить». Может стоить только 29 долларов! ; -)
Здесь также есть вопрос SO .
выберите Выполнить → Начать с инструментом повышения производительности → Размещение объектов , и вы сможете отследить объект-нарушитель до того места, где он был создан. (Это будет работать лучше всего, если вы включите зомби, как описано выше.) Примечание: Snow Leopard добавляет инструмент «Зомби» в Инструменты, доступный также из меню «Выполнить». Может стоить только 29 долларов! ; -)Здесь также есть вопрос SO .
выберите Выполнить → Начать с инструментом повышения производительности → Размещение объектов , и вы сможете отследить объект-нарушитель до того места, где он был создан. (Это будет работать лучше всего, если вы включите зомби, как описано выше.) Примечание: Snow Leopard добавляет инструмент «Зомби» в Инструменты, доступный также из меню «Выполнить». Может стоить только 29 долларов! ; -)Здесь также есть вопрос SO .
Чтобы найти такого рода проблемы с памятью и указателями в целом, вы хотите запустить свой код с помощью средства проверки ошибок памяти во время выполнения, например Valgrind . Это должно указывать на множество вещей, которые делает ваш код неправильно, помимо тех, которые вызывают его сбой.
Valgrind может работать на OSX (хотя он говорит, что он «не поддерживается, неполный и содержит ошибки»). ), и после небольшого взлома кто-то заставил его работать с исполняемыми файлами iPhone SDK .
Еще лучше вы можете попробовать Instruments, который является частью XCode. Здесь есть руководство по его запуску .
Один из способов - использовать объект переменных js, который записывается в верхней части каждой страницы. Затем ваш внешний js может ссылаться на объект настройки с желаемым свойством. Таким образом, вы можете изменить идентификатор на своих страницах aspx без жесткого кодирования чего-либо во внешних файлах js.
Затем вы можете открыть метод materpage или base page, который позволяет каждой странице добавлять элементы идентификатора элемента управления в список. Затем базовый метод должен записать сценарий pageVars в верхней части каждой страницы.
Рик Стрел говорит об этом здесь
Я предпочитаю этот метод, поскольку вы по-прежнему получаете преимущества быстрых селекторов.
1255] Например,
Если у вас есть aspx, напишите следующий скрипт. Необходимо установить флажки, чтобы заставить его работать.
alt text http://www.martijnthe.nl/wp-content/uploads/2009/08/Afbeelding-1.png[1260pting