我刚刚开始学习用于 iOS 开发的 Objective C。我试图理解以下代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"BirdSightingCell";
static NSDateFormatter *formatter = nil;
if (formatter == nil) {
formatter = [[NSDateFormatter alloc] init];
[formatter setDateStyle:NSDateFormatterMediumStyle];
}
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
BirdSighting *sightingAtIndex = [self.dataController objectInListAtIndex:indexPath.row];
[[cell textLabel] setText:sightingAtIndex.name];
[[cell detailTextLabel] setText:[formatter stringFromDate:(NSDate *)sightingAtIndex.date]];
return cell;
}
问题一:
声明变量 CellIdentifier 和格式化程序时,“静态”做了什么?如果我不将它们声明为静态,它仍然有效,那么使用静态有什么好处?
Q2:
static NSDateFormatter *formatter = nil;
if (formatter == nil) {
这个表达式不总是正确的吗?为什么我们在那里使用那个 if 语句?