正在查看一些代码,它看起来正在泄漏内存。而且我不确定我应该清理它吗?或者可以吗?
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
答案 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.