Ошибки при работе с памятью на iOS Поиск причин падений в связи с Low Memory и EXC_BAD_ACCESS
Аудитория Разработчики Разработчики под iOS
Работа с памятью под iOS reference counted NSObject alloc/dealloc retain/release retainCount
Работа с памятью под iOS plane = [[Plane alloc] init]; plane2 = [plane retain]; plane3 = plane; [plane release]; [plane2 release]; [plane dealloc]; Plane plane plane2 plane3 120
Ошибки при работе с памятью Утечки типа 1: ссылки удалены, объект живет Утечки типа 2: ссылки есть, объект живет ( но зря ) Обращение к освобожденным объектам : ссылки живут, объект не живет
Утечки первого типа leakedPlane = [[Plane alloc] init]; … leakedPlaner = [[Plane alloc] init]; Plane leakedPlane Plane Leak
Утечки второго типа leakedPlane = [[Plane alloc] init]; [leakedPlane retain] [leakedPlane release] Plane leakedPlane
Обращение к освобожденному объекту leakedPlane1 = [[Plane alloc] init]; leakedPlane2 = leakedPlane1; [leakedPlane1 release]; leakedPlane1 = nil; [leakedPlane2 fly]; Plane leakedPlane1 leakedPlane2 Elephant Automobile BAD_ACCESS
Low memory Processes Name UUID Count resident pages Mobil 692 MobilePhone 489 KingsHeroOrigins (jettisoned) (active) iPhone/iPod 1st & 2nd generation: 128 MB RAM Only ~20 MB for application!!! iPhone 3GS, iPod 3rd generation & iPad: 256 MB RAM ~110 MB for application, but multitasking
EXC_BAD ACCESS Program received signal: EXC_BAD_ACCESS
Что с этим делать ? Утечки памяти первого типа ( объекты без ссылок ) Instruments, Leaks Утечки памяти второго типа ( вечные объекты ) Instruments, ObjAlloc Анализ связей Переопределение retain/release EXC_BAD_ACCESS NSZombieEnabled (stack) Instruments, ObjAlloc (new XCode) Анализ связей Переопределение retain/release/dealloc
DEMO
Анализ связей Кто владеет этим объектом ? Карта связей По каким событиям он должен освобождаться ? Какие объекты должны освобождаться по этому событию ?
Вопросы ???
Контактная информация Станислав Краснояров