Как устранить ошибки, о которых не сообщается в консоли - PullRequest
0 голосов
/ 02 марта 2011

Может быть, это глупый вопрос, но у меня есть любопытная проблема.Мое приложение дает сбой каждый раз, когда я пытаюсь обновить свои данные в базе данных, используя основные данные, когда я снова вхожу в контроллер представления.Если я захожу в контроллер просмотра и обновляю данные из интернета, это работает.Однако, когда я запускаю программу, войдите в контроллер представления, затем вытолкните его и повторно войдите и попытайтесь обновить данные, это терпит неудачу, и ничто не зарегистрировано в контроллере представления.Я не знаю, почему это происходит.Поэтому я попытался отладить его, но проблема исчезла.После того, как я попробовал снова без режима отладки, это снова не удалось.Я не знаю почему.Может ли это быть проблема выделения или что-то не выпущено?Вот моя реализация -viewDidLoad:

- (void)viewDidLoad {
    pool = [[NSAutoreleasePool alloc] init];

    if (managedObjectContext_ == nil) 
    { 
        managedObjectContext_ = [[(NavTestAppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext] autorelease]; 
    }

    UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:self action:@selector(insertNewObject)];
    self.navigationItem.rightBarButtonItem = addButton;
    [addButton release];

    prikazDatabaseArray = [[[NSMutableArray alloc] init]retain];

    NSDate *now = [NSDate date];
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"dd.MM.yyyy"];
    datumOd = [[dateFormatter stringFromDate:now] retain];

    [dateFormatter release];

    VObrat = YES;
}    

Я также использую

NSAutoreleasePool *pool;
NSURLConnection *theConnection;
NSMutableURLRequest *theRequest;
NSData *xmlData;
NSData *xmlFile;
NSXMLParser *addressParser;

в своем коде.Если бы вы могли, по крайней мере, помочь мне найти, где у меня проблема, потому что без отладки и консоли я чувствую себя слепым.

Большое спасибо

Ответы [ 2 ]

2 голосов
/ 02 марта 2011

удалить авторелиз из строки managedObjectContext_ = [[(NavTestAppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext] autorelease];

Вы не сохранили, поэтому не следует (авто) разблокировать его.


Редактировать: я вижу, есть еще.

удалить удержание в prikazDatabaseArray = [[[NSMutableArray alloc] init]retain];.Alloc уже сохраняет ваш объект.Не нужно делать это дважды.

И избавиться от автозапуска или слить его в конце метода.

Вам следует снова прочитать Руководство по программированию управления памятью .

1 голос
/ 08 марта 2011

если вы создаете свой собственный пул, вам нужно освободить пул в том же контексте, или в методе, или в цикле.

для этого следует использовать [сток стока].

если вывы не можете увидеть ваш журнал сбоев, который вы запускаете с помощью инструмента повышения производительности, он покажет вам место, где вы делаете неправильно.

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