Your SlideShare is downloading. ×
0
Ошибки при работе с памятью наiOS<br />Поиск причин падений в связи с “Low Memory” и EXC_BAD_ACCESS<br />
Аудитория<br />Разработчики<br />Разработчики под iOS<br />
Работа с памятью под iOS<br />reference counted<br />NSObject<br />alloc/dealloc<br />retain/release<br />retainCount<br />
Работа с памятью под iOS<br />plane = [[Plane alloc] init];<br />plane2 = [plane retain];<br />plane3 = plane;<br />[plane...
Ошибки при работе с памятью<br />Утечки типа 1: 	ссылки удалены, объект живет<br />Утечки типа 2: 	ссылки есть, объект жив...
Утечки первого типа<br />leakedPlane = [[Plane alloc] init];<br />…<br />leakedPlaner = [[Plane alloc] init];<br />Plane<b...
Утечки второго типа<br />leakedPlane = [[Plane alloc] init];<br />[leakedPlane retain]<br />[leakedPlane release]<br />Pla...
Обращение к освобожденному объекту<br />leakedPlane1 = [[Plane alloc] init];<br />leakedPlane2 = leakedPlane1;<br />[leake...
Low memory<br />Processes<br />         Name                 UUID                    Count resident pages<br />      Mobil...
EXC_BAD ACCESS<br />Program received signal:  “EXC_BAD_ACCESS”<br />
Что с этим делать?<br />Утечки памяти первого типа (объекты без ссылок)<br />Instruments, Leaks<br />Утечки памяти второго...
DEMO<br />
Анализ связей<br />Кто владеет этим объектом?<br />Карта связей<br />По каким событиям он должен освобождаться? <br />Каки...
Вопросы???<br />
Контактная информация<br />Станислав Краснояров<br />Stanislav.Krasnoyarov@gmail.com<br />
Upcoming SlideShare
Loading in...5
×

Memory management for i os dev

3,966

Published on

Published in: Technology, Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
3,966
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
9
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Memory management for i os dev"

  1. 1. Ошибки при работе с памятью наiOS<br />Поиск причин падений в связи с “Low Memory” и EXC_BAD_ACCESS<br />
  2. 2. Аудитория<br />Разработчики<br />Разработчики под iOS<br />
  3. 3. Работа с памятью под iOS<br />reference counted<br />NSObject<br />alloc/dealloc<br />retain/release<br />retainCount<br />
  4. 4. Работа с памятью под iOS<br />plane = [[Plane alloc] init];<br />plane2 = [plane retain];<br />plane3 = plane;<br />[plane release];<br />[plane2 release]; <br /> [plane dealloc];<br />plane<br />1<br />2<br />0<br />Plane<br />plane3<br />plane2<br />
  5. 5. Ошибки при работе с памятью<br />Утечки типа 1: ссылки удалены, объект живет<br />Утечки типа 2: ссылки есть, объект живет (но зря)<br />Обращение к освобожденным объектам: ссылки живут, объект не живет<br />
  6. 6. Утечки первого типа<br />leakedPlane = [[Plane alloc] init];<br />…<br />leakedPlaner = [[Plane alloc] init];<br />Plane<br />leakedPlane<br />Leak<br />Plane<br />
  7. 7. Утечки второго типа<br />leakedPlane = [[Plane alloc] init];<br />[leakedPlane retain]<br />[leakedPlane release]<br />Plane<br />leakedPlane<br />
  8. 8. Обращение к освобожденному объекту<br />leakedPlane1 = [[Plane alloc] init];<br />leakedPlane2 = leakedPlane1;<br />[leakedPlane1 release]; leakedPlane1 = nil;<br />[leakedPlane2 fly];<br />Elephant<br />leakedPlane1<br />Plane<br />BAD_ACCESS<br />leakedPlane2<br />Automobile<br />
  9. 9. Low memory<br />Processes<br />         Name                 UUID                    Count resident pages<br />      MobileMail <0798395dde43ca46317db6e674dfbbfd>    692<br />     MobilePhone <82c9bd8583f4b09706a16b08e641a4b9>    489<br />KingsHeroOrigins <307177e18450cdb18d466c8e7fbb23d9>  12718 (jettisoned) (active)<br />iPhone/iPod 1st & 2nd generation: 128 MB RAM<br />Only ~20 MB for application!!!<br />iPhone 3GS, iPod 3rd generation & iPad: 256 MB RAM<br />~110 MB for application, but multitasking<br />
  10. 10. EXC_BAD ACCESS<br />Program received signal:  “EXC_BAD_ACCESS”<br />
  11. 11. Что с этим делать?<br />Утечки памяти первого типа (объекты без ссылок)<br />Instruments, Leaks<br />Утечки памяти второго типа (вечные объекты)<br />Instruments, ObjAlloc<br />Анализ связей<br />Переопределение retain/release<br />EXC_BAD_ACCESS<br />NSZombieEnabled (stack)<br />Instruments, ObjAlloc (new XCode)<br />Анализ связей<br />Переопределение retain/release/dealloc<br />
  12. 12. DEMO<br />
  13. 13. Анализ связей<br />Кто владеет этим объектом?<br />Карта связей<br />По каким событиям он должен освобождаться? <br />Какие объекты должны освобождаться по этому событию?<br />
  14. 14. Вопросы???<br />
  15. 15. Контактная информация<br />Станислав Краснояров<br />Stanislav.Krasnoyarov@gmail.com<br />
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×