Любая подсказка о крушении "SIGSEGV"? - PullRequest
2 голосов
/ 08 декабря 2010

Я получил следующий отчет о сбое:

OS Version:      iPhone OS 4.2.1
Report Version:  104

Exception Type:  SIGSEGV
Exception Codes: SEGV_ACCERR at 0x12803ea4
Crashed Thread:  0

Thread 0 Crashed:
0   libobjc.A.dylib                     0x0000930a realizeClass(class_t*) + 18
1   libobjc.A.dylib                     0x0000935d realizeClass(class_t*) + 101
2   libobjc.A.dylib                     0x0000953f prepareForMethodLookup + 51
3   libobjc.A.dylib                     0x00005f39 lookUpMethod + 41
4   libobjc.A.dylib                     0x00003781 _class_lookupMethodAndLoadCache + 13
5   libobjc.A.dylib                     0x000034b7 objc_msgSend_uncached + 27
6   Oculus                              0x0001449f -[TestSingleView downLightingEnded] (TestSingleView.m:52)

В следующем методе:

- (void) downLightingEnded {
    [currentTestItem removeFromSuperview];
    currentTestItem = nil;
    CGRect frame = CGRectMake(0, 0, [myTestData heightOfRow:newI], [myTestData heightOfRow:newI]); //line 52
    currentTestItem = [[TestItemView alloc] initWithFrame:frame AndEyeTestItem:[myTestData signAtRow:newI Column:newJ]];
    currentTestItem.alpha = 0.0;
    [self addSubview:currentTestItem];
    currentTestItem.center = self.center;

    [UIView beginAnimations:nil context:nil];
    currentTestItem.alpha = 1.0;
    [UIView commitAnimations];

    [currentTestItem release];
}

Конечно, «currentTestItem» может быть нулем, когда метод запускается, но отправка сообщения на ноль не является проблемой, так что это не причина сбоя.

Есть идеи, в каком направлении мне нужно искать?

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

1 Ответ

3 голосов
/ 08 декабря 2010

Может ли currentTestItem быть не нулевым, а указывать на освобожденный объект?

Проверить, включив зомби (Совет № 1):

http://www.loufranco.com/blog/files/debugging-memory-iphone.html

Редактировать (на основании комментария к вопросу от OP): myTestData может быть проверкой зомби, включив зомби.По сути, он говорит Objective-C не освобождать объекты, у которых счетчик сохранений равен 0. Вместо этого он помечает их как зомби.Если вы отправите какое-нибудь сообщение зомби, оно сообщит вам.

...