'

Ошибки при работе с памятью на iOS

Понравилась презентация – покажи это...





Слайд 0

Ошибки при работе с памятью на iOS Поиск причин падений в связи с “Low Memory” и EXC_BAD_ACCESS


Слайд 1

Аудитория Разработчики Разработчики под iOS


Слайд 2

Работа с памятью под iOS reference counted NSObject alloc/dealloc retain/release retainCount


Слайд 3

Работа с памятью под iOS plane = [[Plane alloc] init]; plane2 = [plane retain]; plane3 = plane; [plane release]; [plane2 release]; ? [plane dealloc]; Plane plane plane2 plane3 1 2 0


Слайд 4

Ошибки при работе с памятью Утечки типа 1: ссылки удалены, объект живет Утечки типа 2: ссылки есть, объект живет (но зря) Обращение к освобожденным объектам: ссылки живут, объект не живет


Слайд 5

Утечки первого типа leakedPlane = [[Plane alloc] init]; … leakedPlaner = [[Plane alloc] init]; Plane leakedPlane Plane Leak


Слайд 6

Утечки второго типа leakedPlane = [[Plane alloc] init]; [leakedPlane retain] [leakedPlane release] Plane leakedPlane


Слайд 7

Обращение к освобожденному объекту leakedPlane1 = [[Plane alloc] init]; leakedPlane2 = leakedPlane1; [leakedPlane1 release]; leakedPlane1 = nil; [leakedPlane2 fly]; Plane leakedPlane1 leakedPlane2 Elephant Automobile BAD_ACCESS


Слайд 8

Low memory Processes          Name                 UUID                    Count resident pages       MobileMail <0798395dde43ca46317db6e674dfbbfd>    692      MobilePhone <82c9bd8583f4b09706a16b08e641a4b9>    489 KingsHeroOrigins <307177e18450cdb18d466c8e7fbb23d9>  12718 (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


Слайд 9

EXC_BAD ACCESS Program received signal:  “EXC_BAD_ACCESS”


Слайд 10

Что с этим делать? Утечки памяти первого типа (объекты без ссылок) Instruments, Leaks Утечки памяти второго типа (вечные объекты) Instruments, ObjAlloc Анализ связей Переопределение retain/release EXC_BAD_ACCESS NSZombieEnabled (stack) Instruments, ObjAlloc (new XCode) Анализ связей Переопределение retain/release/dealloc


Слайд 11

DEMO


Слайд 12

Анализ связей Кто владеет этим объектом? Карта связей По каким событиям он должен освобождаться? Какие объекты должны освобождаться по этому событию?


Слайд 13

Вопросы???


Слайд 14

Контактная информация Станислав Краснояров Stanislav.Krasnoyarov@gmail.com


×

HTML:





Ссылка: