Можно ли отслеживать выделение и освобождение объектов Objective-C? Например, если у меня есть классная книга, я хочу отслеживать все распределения и освобождения объектов типа Book. Я могу отслеживать все классы SKD по умолчанию, такие как UIViewController, UIWindow, UIView, NSDictionary и все такое, но я хочу также отслеживать объекты, созданные из определенных классов.Инструменты Выделение дорожек alloc и dealloc объектов определяемых пользователем классов
ответ
Инструмент Allocations можно использовать для отслеживания жизненного цикла ваших объектов. Если вы используете шаблон «Allocations», он настроен для записи событий malloc
и free
. Вы можете настроить его, чтобы записывать retain
, release
и autorelease
события поворота на «Записи ссылочных подсчетов» флажок в настройках инструмента Отчисления:
(Вы не можете переключать это время инструментов записи , который он запускается по умолчанию, как только вы выбираете шаблон)
Обновление для Xcode 9:. Apple, сделал его более трудно найти эти настройки. Теперь вам нужно выбрать инструмент Allocations, затем в строке меню выберите «Файл»> «Параметры записи».
После бега, вы можете найти свои объекты с помощью Распределения> Статистик> Резюме Объекта вида, который по умолчанию для Detail панели (нижняя половина окна):
Если вы хотите видеть объекты, которые были высвобождены, прежде чем остановили бег, вам необходимо изменить распределение настройки из «Созданный & Still Living» (по умолчанию) на продолжительность жизни «Все объекты, созданные»:
Чтобы найти объекты определенного класса, начните с ввода имени класса в поле поиска в правой части окна панели инструментов. Затем найдите имя класса в столбце «Категория» в виде списка, наведите указатель мыши на него и щелкните стрелку рядом с ней. Например, мое приложение имеет класс с именем Tile
, поэтому я ищу для этого, а затем нажмите стрелку рядом с Tile
в списке:
Теперь представление списка показывает каждый экземпляр Tile
. (Обратите внимание, что вы должны ввести фактический класс объекта, а не суперкласс. Ввод NSObject
будет искать объекты, которые были созданы [NSObject alloc]
, а не объекты, которые были созданы [Tile alloc]
.) Я могу просмотреть историю для любого конкретного экземпляра, нажав стрелку рядом с адресом этого экземпляра:
в окне подробностей объекта, я могу видеть malloc
и free
события и, так как я включил «счетчик ссылок Record», я могу видеть retain
, release
и autorelease
сообщения и их влияние на счет сохранения объекта.Если я хочу, чтобы увидеть стек вызовов для любого из этих событий, я могу открыть расширенную панель детали на правой стороне окна:
- 1. Отслеживать все Objective-C's alloc/allocWithZone/dealloc
- 2. Использование вектора определяемых пользователем объектов типа класса
- 3. xcode 4.2 memory alloc/dealloc
- 4. Где инструменты xcode «Отслеживание дорожек»
- 5. сортировка вектора определяемых пользователем классов на основе строки внутри класса
- 6. «Найти» и «уникально» в массиве определяемых пользователем объектов класса (MATLAB)
- 7. несогласованности среди встроенных типов и определяемых пользователем
- 8. Обработка исключений, определяемых пользователем Python
- 9. Реализация определяемых пользователем арифметических функций
- 10. инициализации вектор векторов, определяемых пользователем
- 11. iOS: Свойства - выделение и освобождение объектов
- 12. Очистка всех определяемых пользователем объектов в рабочей области R
- 13. json.dumps в python над списком определяемых пользователем объектов
- 14. cppcheck считает, что существует несоответствие в Alloc и dealloc
- 15. Правильный способ заявить, Alloc, нагрузку и dealloc в NSMutableArray
- 16. Ловля определяемых пользователем исключений Oracle в VB.NET
- 17. JAVA: Regexp на определяемых пользователем токенах
- 18. Одд поведение определяемых пользователем переменных в MySQL
- 19. Отображение доступных определяемых пользователем типов в Oracle
- 20. rxDataStep преобразует аргумент не определяемых пользователем функций
- 21. Как вставить в таблицу столбцов, определяемых пользователем
- 22. Добавление переменных, не определяемых пользователем, в формы
- 23. Создание списка в определяемых пользователем функций
- 24. Установка определяемых пользователем переменных с соединениями
- 25. Как использовать BOOST_CHECK_CLOSE для определяемых пользователем типов
- 26. Выделение/Инициализация объектов
- 27. Проверка пользовательского ввода для игры с магическим квадратом/Сравнение массивов (определяемых пользователем и определяемых программистом)
- 28. Объявление и потребление определяемых пользователем типов таблиц в SQL
- 29. Динамический запрос: значения и количество атрибутов, определяемых пользователем
- 30. Выделение стека определяемого пользователем объекта класса
Это удивительный пост. +1 для интерактивных изображений. Какое приложение вы использовали для создания этих скриншотов? – gyurisc
Я использовал ScreenFlow для записи экрана и редактирования длины и размера каждого видео. Затем я использовал Photoshop для преобразования каждого видео в анимированный GIF. –
@robmayoff fabulas job, такие люди, как вы, помогаете сообществу ios учиться все больше и больше. – Alok