シングルトンである私のデータベースマネージャーを考えてみましょう。
+ (SWDatabaseManager *)retrieveManager
{
@synchronized(self)
{
if (!sharedSingleton)
{
sharedSingleton = [[SWDatabaseManager alloc] init];
}
return sharedSingleton;
}
}
- (NSArray *)getProductDetails:(NSString *)someString
{
NSArray *temp = [self getRowsForQuery:someString];
return temp;
}
- (NSArray *)getRowsForQuery:(NSString *)sql
{
sqlite3_stmt *statement=nil;
NSMutableArray *arrayResults = [NSMutableArray arrayWithCapacity:1];
//
//Fetching data from database and adds them in to arrayResults
//
return arrayResults;
}
今、いくつかのView Controllerから、このようにデータベースマネージャーの機能を呼び出しています....
[self getProductServiceDidGetDetail:[[SWDatabaseManager retrieveManager] getProductDetail: @"SomeQuery"]
- (void)getProductServiceDidGetDetail:(NSArray *)detailArray
{
[self setDataSource:[NSArray arrayWithArray:detailArray]];
[self.tableView reloadData];
}
質問は... getRowsForQuery の arrayResult はいつリリースされますか?
getProductServiceDidGetDetail の detailArray に nil を割り当てる必要がありますか?
メモリリークはありますか?
提案をいただければ幸いです。