Сбой приложения в методе IBAction - PullRequest
0 голосов
/ 26 февраля 2011

Хорошо, вот мой код

-(IBAction)nextAction
{
    dispatch_async(myQueue, ^{ [self plusOneDate]; });
}

-(void)plusOneDate
{
    int hoursToAdd = 1;  

    // set up date components
    NSDateComponents *components = [[[NSDateComponents alloc] init] autorelease];
    [components setHour:hoursToAdd];

    // create a calendar
    NSCalendar *gregorian = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease];
    NSDate *newDate2 = [gregorian dateByAddingComponents:components toDate:appStateDate options:0];

    NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
    [formatter setDateFormat:@"YYYYMMddHH0000"];
    dateString = [formatter stringFromDate:newDate2];
    [formatter release];

    appStateDate = newDate2;
    newDate2 = nil;
}

Все, что он делает, это добавляет 1 час к объекту NSDate (appStateDate), форматирует его и устанавливает переменную dateString.

Каждый раз, когда я нажимаю кнопку UIB в приложении, подключенном к nextAction, приложение вылетает. Я попытался удалить файл xib и создать новый. Это не помогло и до сих пор вылетает.

В режиме отладки:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '(null): unrecognized selector sent to class 0x6242690'

Кто-нибудь, кто знает почему? Я расстраиваюсь.

1 Ответ

0 голосов
/ 27 февраля 2011

Это не столько ответ, сколько наблюдение.Значение, назначенное appStateDate в конце метода, является автоматически выпущенным объектом, и вы нигде не сохраняете его.Вы не можете полагаться на атрибут «retain» свойства (если appStateDate фактически где-то объявлен как свойство), потому что вы не использовали это свойство в присваивании.объект, на который указывает appStateDate, будет возвращен, когда runloop истощает NSAutoreleasePool.Возможно, именно отсюда и происходит авария.

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