从日历中检索事件的NSDate问题

时间:2011-07-22 11:11:42

标签: iphone

我从NSDatePicker(startDate,endDate)收到两个值。之后,我尝试在这两个日期之间检索日历事件。而不是startDate,endDate我给了remotePast,remoteFuture。

程序未显示任何错误。使用此代码时,我得到了EXC_BAD_ACCESS。这段代码出了什么问题?

NSCalendar *sysCalendar = [[NSCalendar currentCalendar] autorelease];
unsigned int unitFlags = NSDayCalendarUnit; 
NSDateComponents *difference=[[[NSDateComponents alloc] init] autorelease];
difference = [[sysCalendar components:unitFlags fromDate:startDate 
                             toDate:endDate options:0] autorelease]; 
double days = [difference day]; 
NSLog(@"DAYSS   %@",days);

2 个答案:

答案 0 :(得分:1)

我在这里注意到三个错误:

  1. 不要自动发布您获得的currentCalendar,不需要
  2. days应为NSInteger而不是double,因为[difference day]将返回NSInteger
  3. 尝试使用days记录%@不起作用,用于打印对象描述,使用%i
  4. 在我看来,应用程序在NSLog(@"DAYSS %@",days);崩溃,使用%i替换它会导致崩溃,但你也应该纠正其他错误。

答案 1 :(得分:0)

嗨,因为文斯已经解释过你所犯的错误,

[NScalender currentcalender]也有内存泄漏 - 你无法自动释放它

http://www.cocoabuilder.com/archive/cocoa/173758-nscalendar-currentcalendar-leak.html

你应该检查一下 - 包含事件工具包的所有功能

http://developer.apple.com/library/ios/#samplecode/SimpleEKDemo/Introduction/Intro.html#//apple_ref/doc/uid/DTS40010160