У меня есть UITableView
, поддерживаемый NSArray
свойством. Массив объявлен как свойство:
@property (nonatomic, retain) NSArray *events;
@synthesize events;
И используется в следующих методах. Инструменты постоянно говорят мне, что populateEvents вызывает утечки. Я пробовал многочисленные варианты этого кода, но в итоге получаю либо больше утечек, либо EXC_BAD_ACCESS
.
- (void)viewDidLoad
{
self.events = [self populateEvents];
}
- (void)updateData
{
events = nil;
self.events = [self populateEvents];
[self.tableView reloadData];
}
- (NSArray*)populateEvents
{
NSMutableArray *response = [[NSMutableArray alloc] init];
NSString *sql = [NSString stringWithFormat:@"SELECT * FROM Event"];
sqlite3_stmt *statement = [database prepare:sql];
if(statement != nil)
{
// Loop through the results and add them to the response
while(sqlite3_step(statement) == SQLITE_ROW)
{
Event *event = [[Event alloc] init];
event.subject = [NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 0)];
e
[response addObject:event];
[event release];
}
sqlite3_finalize(statement);
}
return [response autorelease];
}
UPDATE
Многие из вас спрашивают о классе мероприятия:
@interface Event : NSObject
@property (nonatomic) NSInteger Id;
@property (nonatomic, retain) NSString *subject;
@property (nonatomic, retain) NSString *details;
@property (nonatomic, retain) NSString *startTime;
@property (nonatomic, retain) NSString *endTime;
@property (nonatomic, retain) NSString *eventType;
@property (nonatomic, retain) NSString *employee;
@end
- (void)dealloc
{
[super dealloc];
[subject release];
[details release];
[startTime release];
[endTime release];
[eventType release];
[employee release];
}
- (NSString*)startTime
{
return [self humanReadableDate:startTime];
}
- (NSString*)endTime
{
return [self humanReadableDate:endTime];
}
- (NSString*)humanReadableDate:(NSString*)isoDate
{
NSDateFormatter* formatter = [[[NSDateFormatter alloc]init]autorelease];
[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"];
NSDate* date = [formatter dateFromString:isoDate];
[formatter setDateFormat:@"MMM dd yyyy HH:mm"];
NSString* humanrReadable = [formatter stringFromDate:date];
return humanrReadable;
}
@end