Когда случайное число отображается дважды, мой объект ломает приложение iPhone!:( - PullRequest
1 голос
/ 22 апреля 2011

Я работаю над хорошим приложением, как обычно, и тогда это происходит!Вы вращаете колесо удачи в моем приложении, и когда анимация вращения заканчивается, приложение должно рандомизировать число и отображать карту, соответствующую номеру индекса.

Карты хранятся в NSMutableArray, работает отлично, когда звонили в первый раз.Например.Когда приложение рандомизирует номер «1», карта № 1 вызывается и отображается без проблем!Но когда рандомизатор снова нажимает «1», приложение вылетает в строке, указанной ниже.

Вот код, ПОЖАЛУЙСТА, помогите мне:)

NSNumber *cardNumber;
    cardNumber = [NSNumber numberWithUnsignedInt:arc4random()%[appDelegate.cardArray count]];

    NSLog(@"%@", cardNumber);

    SpinCard *selectedCard = [appDelegate.cardArray objectAtIndex:[cardNumber doubleValue]];

    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.5];
    [snurrKnapp setAlpha:100];
    [UIView setAnimationTransition:UIViewAnimationTransitionCurlDown forView:cardView cache:YES];
    [UIView commitAnimations];
    [snurrKnapp setEnabled:YES];
    if(![cardTitle.text isEqualToString:selectedCard.cardTitle]) { //Crashes here
        [cardTitle setText:selectedCard.cardTitle]; //If I remove the if-case it crashes here
        [cardContent setText:selectedCard.cardContent];
    }
    [selectedCard release];

Вот ошибка, которую я получаю:1008 *

2011-04-21 23:10:54.296 Snurra Flaskan[947:707] 0
2011-04-21 23:10:58.794 Snurra Flaskan[947:707] 2
2011-04-21 23:11:02.691 Snurra Flaskan[947:707] 1
2011-04-21 23:11:08.977 Snurra Flaskan[947:707] 2
warning: Unable to read symbols for /Developer/Platforms/iPhoneOS.platform/DeviceSupport/4.3.1 (8G4)/Symbols/Developer/usr/lib/libXcodeDebuggerSupport.dylib (file not found).
(gdb) 

1 Ответ

5 голосов
/ 22 апреля 2011

Я очень новичок в Obj-C, но вот что я думаю, что происходит.

Вы не должны звонить [selectedCard release];

Поскольку objectAtIndex не выделяет новую SpinCard для selectedCard. Вы не должны выпускать это. Это объясняет поведение при повторном использовании этой SpinCard: вы не можете использовать ее, она уже выпущена.

...