好的,这是我的代码
-(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'
任何知道原因的人?我很沮丧。
答案 0 :(得分:0)
这不是一个答案,而是一个观察。在方法结束时分配给appStateDate的值是一个自动释放的对象,您无处保留它。您不能依赖属性的“retain”属性(如果appStateDate事实上在某处声明为属性),因为您没有在赋值中使用该属性。
一旦IBAction完成,当runloop耗尽NSAutoreleasePool时,appStateDate指向的对象将被回收。也许这就是崩盘的来源。