我有這樣一段代碼在Objective-C從tutorial採取:何時使用訪問器以及何時直接訪問屬性?
- (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;
我什麼時候必須使用訪問和我什麼時候必須使用訪問我不明白?
在此先感謝您的幫助!