У меня есть этот фрагмент кода в Objective-C, взятый из урока :
- (NSFetchedResultsController *)fetchedResultsController {
if (fetchedResultsController_ != nil) {
return fetchedResultsController_;
}
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"FailedBankInfo"
inManagedObjectContext:self.context];
[fetchRequest setEntity:entity];
NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"details.closeDate" ascending:NO];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]];
[fetchRequest setFetchBatchSize:20];
NSFetchedResultsController *theFetchedResultsController = [[NSFetchedResultsController alloc]
initWithFetchRequest:fetchRequest
managedObjectContext:self.context
sectionNameKeyPath:nil
cacheName:@"Root"];
self.fetchedResultsController = theFetchedResultsController;
fetchedResultsController_.delegate = self;
[sort release];
[fetchRequest release];
[theFetchedResultsController release];
return fetchedResultsController_;
}
В моем файле декларации у меня есть это:
@interface FailedBankListViewController : UITableViewController
<NSFetchedResultsControllerDelegate> {
NSFetchedResultsController *fetchedResultsController_;
NSManagedObjectContext *context_;
}
@property (nonatomic, retain) NSFetchedResultsController *fetchedResultsController;
@property (nonatomic, retain) NSManagedObjectContext *context;
@end
У меня вопрос, почему я должен писать такой код, как только мы обращаемся непосредственно к атрибуту, когда мы используем метод доступа:
if (fetchedResultsController_ != nil) {
return fetchedResultsController_;
}
// AND
self.fetchedResultsController = theFetchedResultsController;
и это не работает:
if (self.fetchedResultsController != nil) {
return self.fetchedResultsController;
}
// AND
fetchedResultsController_ = theFetchedResultsController;
Я не понимаю, когда мне нужно использовать аксессор и когда мне нужно использовать аксессор?
Заранее спасибо за помощь!