应用程序在IBAction方法中崩溃

时间:2011-02-26 16:16:34

标签: iphone objective-c xcode

好的,这是我的代码

-(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;
}

它所做的只是向NSDate对象(appStateDate)添加1小时,对其进行格式化,并设置dateString变量。

每次我在应用中按下UIButton,连接到nextAction时,应用都会崩溃。 我尝试删除xib文件并创建一个新文件。它没有帮助,仍然崩溃。

在调试模式下:

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

任何知道原因的人?我很沮丧。

1 个答案:

答案 0 :(得分:0)

这不是一个答案,而是一个观察。在方法结束时分配给appStateDate的值是一个自动释放的对象,您无处保留它。您不能依赖属性的“retain”属性(如果appStateDate事实上在某处声明为属性),因为您没有在赋值中使用该属性。

一旦IBAction完成,当runloop耗尽NSAutoreleasePool时,appStateDate指向的对象将被回收。也许这就是崩盘的来源。