iphone dev Как найти утечку памяти nspathstore2 из отчета о сбое? - PullRequest
0 голосов
/ 01 апреля 2012

Я получил отчет о сбое для моего приложения от Apple, в котором говорится о сбое из-за некоторой утечки nspathstore2, теперь мне трудно найти эту ошибку в коде после прочтения отчета, вот я отчет

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   libobjc.A.dylib                 0x31071f7e objc_msgSend + 22
1   Foundation                      0x35ba2210 -[NSPathStore2 stringByAppendingPathComponent:] + 84
2   Photobook                       0x000131d0 0x1000 + 74192
3   Photobook                       0x0001333c 0x1000 + 74556
4   Photobook                       0x000138a2 0x1000 + 75938
5   Photobook                       0x0001200c 0x1000 + 69644
6   Photobook                       0x000113ac 0x1000 + 66476
7   UIKit                           0x36fc30b6 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 142
8   CoreFoundation                  0x36ca51f4 -[NSObject performSelector:withObject:] + 36
9   QuartzCore                      0x36481a9e -[CALayer layoutSublayers] + 210
10  QuartzCore                      0x364816b6 CA::Layer::layout_if_needed(CA::Transaction*) + 210
11  QuartzCore                      0x3648583c CA::Context::commit_transaction(CA::Transaction*) + 220
12  QuartzCore                      0x36485578 CA::Transaction::commit() + 308
13  QuartzCore                      0x3647d4b2 CA::Transaction::observer_callback(__CFRunLoopObserver*, unsigned long, void*) + 50
14  CoreFoundation                  0x36d1ab14 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 12
15  CoreFoundation                  0x36d18d50 __CFRunLoopDoObservers + 252
16  CoreFoundation                  0x36d190aa __CFRunLoopRun + 754
17  CoreFoundation                  0x36c9c49e CFRunLoopRunSpecific + 294
18  CoreFoundation                  0x36c9c366 CFRunLoopRunInMode + 98
19  GraphicsServices                0x30d7e432 GSEventRunModal + 130
20  UIKit                           0x36fede76 UIApplicationMain + 1074
21  Photobook                       0x0000229c 0x1000 + 4764
22  Photobook                       0x00002254 0x1000 + 4692

Теперь я предполагал, что это "1 Foundation 0x35ba2210 - [NSPathStore2 stringByAppendingPathComponent:] + 84" указывает, что сбой находится в строке 84 где-то в проекте, поэтому я пытаюсь найти это, но нет stringByAppendingPathComponent:используется в строке 84 в любом месте проекта, поэтому меня смущает, что, как найти эту утечку в проекте, можно найти руководство, как найти это, спасибо и рассмотреть.Саад

1 Ответ

2 голосов
/ 14 сентября 2012

Проблема:

- [длина NSPathStore2]: нераспознанный селектор отправлен в экземпляр 0x80cea00

Когда ваше приложение аварийно завершает работу с NSPathStore2 Уведомление, содержит ли он какой-либо метод, подобный приведенному выше, содержит "длину", затем перейдите к моему решению ниже своей работы, отлично для меня. Надеюсь, это также работает для вас. :)

Решение: Вышеупомянутое сообщение об ошибке означает, что у вас есть некоторая проблема с вашей объектной переменной " PATH ". Я объясню это вам с помощью приведенного ниже примера: Давайте рассмотрим, как вы определяете приведенный ниже код в ваших файлах .m любым методом.где необходимо определить. Где " dbpath " является переменной класса NSString , которая определяется в файле .h. Теперь ваш полный путь будет сохранен в " dbpath"переменная, как описано ниже в примере.Теперь, когда вы собираетесь использовать эту переменную " dbpath " в любых других методах в файле .m, тогда произойдет сбой с сообщением выше " - [ NSPathStore2 length]:нераспознанный селектор отправлен на экземпляр 0x80cea00", поскольку у вас нет ни" alloc", ни" retain"" dbpath".Поэтому для решения этой проблемы, пожалуйста, либо alloc , либо оставьте переменную " dbpath " в приведенном ниже примере. ЭТО МОЙ ОТВЕТ, КОГДА Я ПОЛУЧИЛ ЭТОТ ДРАГОЦЕННОСТЬ, И ЕГО РАБОТАЕТ ДЛЯ МЕНЯ ХОРОШО.ВСЕМ ЛУЧШЕГО ДЛЯ ВАС:) NSArray * paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);NSString * path = [paths objectAtIndex: 0];dbpath = [путь stringByAppendingPathComponent: @ "mydb.sqlite"];

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...