使用EKEvent后清理内存

时间:2011-09-29 21:14:49

标签: iphone objective-c ios

正在查看一些代码,它看起来正在泄漏内存。而且我不确定我应该清理它吗?或者可以吗?

EKEvent *event  = [EKEvent eventWithEventStore:eventStore];

我会猜到这是一种自动释放,因为它是一种连接方法。

但是当我读到

event.startDate = [[NSDate alloc] init];

我看到一个alloc和一个init,所以我很担心它会泄漏。

下面的完整代码块:

EKEventStore *eventStore = [[EKEventStore alloc] init];

EKEvent *event  = [EKEvent eventWithEventStore:eventStore];
event.title     = @"Test Event for Code Demo";

event.startDate = [[NSDate alloc] init];
event.endDate   = [[NSDate alloc] initWithTimeInterval:600 sinceDate:event.startDate];

[event setCalendar:[eventStore defaultCalendarForNewEvents]];
NSError *err;
[eventStore saveEvent:event span:EKSpanThisEvent error:&err]; 

[eventStore release];

谢谢, -code

2 个答案:

答案 0 :(得分:1)

我认为属性startDate和endDate不需要分配和初始化。您正在使用当前代码创建自动释放的对象。

EKEvent *event  = [EKEvent eventWithEventStore:eventStore]; // autoreleased this way

要填写日期和属性,请尝试使用其他方法填写。

event.startDate = [NSDate date];
event.endDate = [NSDate dateWithTimeInterval:600 sinceDate:event.startDate];

现在您只需要像当前一样发布eventStore。希望这会有所帮助。

答案 1 :(得分:0)

如果您使用的是EKEventViewController,Apple文档会说:

@property(nonatomic, retain) EKEvent *event
Discussion
This property must be set before the view is displayed.

EKEventViewController Documentation