- (NSString *)formattedDate {
static NSDateFormatter *dateFormatter = nil;
if (dateFormatter == nil) {
dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd.MM.yyyy"];
}
NSDate *today = [NSDate date];
NSString *formattedDate = [dateFormatter stringFromDate:today];
return formattedDate;
}
和
- (NSString *)formattedDate {
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd.MM.yyyy"];
NSDate *today = [NSDate date];
NSString *formattedDate = [dateFormatter stringFromDate:today];
return formattedDate;
}
两者之间有什么区别,哪一个更好?
答案 0 :(得分:2)
第一个在开始时有这个:
static NSDateFormatter *dateFormatter = nil;
if (dateFormatter == nil) {
dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd.MM.yyyy"];
}
......所以就是这样。
第二个有这个:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd.MM.yyyy"];
......所以它确实如此。
我整个星期都在这里。
让我们先来看看第二个人在做什么。它正在创建一个日期格式化程序,并告诉它需要什么格式的日期。然后它获取该日期格式化程序以格式化当前日期。它每次都执行所有这些步骤。
第二个创建日期格式化程序,但前提是它尚未这样做。它通过将日期格式化程序置于静态变量中而挂起。然后它获取格式化器来格式化当前日期
如果他们只运行一次,他们几乎是一样的;第一个将无限小,因为它必须进行检查。如果它们运行很多次,就会出现差异。第一个运行如下:
Create a date formatter
Format the date
Create a date formatter
Format the date
Create a date formatter
Format the date
...
第二个运行如下:
Check for a date formatter
Create a date formatter
Format the date
Check for a date formatter
Format the date
Check for a date formatter
Format the date
...
创建日期格式化程序是一项非常昂贵的操作,但检查一个不是,所以如果多次调用该函数,第二个版本要快得多。
答案 1 :(得分:1)
第一个示例使用静态变量并仅将其初始化为1。
第二个每次初始化dateFormater
。
所以第一个例子的表现要好一些。
答案 2 :(得分:1)
发送[self formattedDate]
时,
dateFormatter
(推荐);