Cleaning up memory after using EKEvent
Was looking at some code and it looks to be leaking memory. And I'm not sure should I clean this up? Or is it ok?
EKEvent *event = [EKEvent eventWithEventStore:eventStore];
I would 开发者_高级运维have guessed this is an autorelease since its a connivence method.
But when i read
event.startDate = [[NSDate alloc] init];
I see an alloc and an init, so I get nervous about wondering will it be leaking.
Full block of code below:
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];
Thanks, -Code
I don't think the properties startDate and endDate need to be alloc'd and init'd. You are creating an autoreleased object with your current code.
EKEvent *event = [EKEvent eventWithEventStore:eventStore]; // autoreleased this way
To fill your dates and properties, try an alternate method to fill.
event.startDate = [NSDate date];
event.endDate = [NSDate dateWithTimeInterval:600 sinceDate:event.startDate];
Now you just need to release eventStore like you are currently doing. Hope this helps.
If you are using EKEventViewController, Apple documentation says following:
@property(nonatomic, retain) EKEvent *event
Discussion
This property must be set before the view is displayed.
EKEventViewController Documentation
精彩评论