One*_*ake 1 c iphone objective-c
我不确定这是做什么的.dateFormatter第一次只能设置吗?
static NSDateFormatter *dateFormatter = nil;
if (dateFormatter == nil) {
dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setTimeStyle:NSDateFormatterMediumStyle];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
}
Run Code Online (Sandbox Code Playgroud)
通常我会读到这意味着,设置为零,然后检查它是否为零,但如果我在条件内的NSLog,它只被调用一次?
额外的点,如果你可以更深入地解释静态,我知道它创建一个全局变量(?),但这就是它.
不,static不会dateFormatter参加课程.它可能看起来像那样,但static不是Objective-C的功能,对类没有任何了解.
static是标准C语言的功能.请记住,Objective-C只是C的扩展.如果static在方法中使用,它将创建一个仅在该方法中可见的全局变量.
这意味着此变量未在堆栈上分配,而是在数据段中分配.方法中本地定义的变量(非静态变量)与方法调用完成后返回的代码地址一起放在堆栈上 - 因此当执行离开方法时,本地方法的变量就消失了.在此方法中,dateFormatter始终表示内存中的相同位置.
dateFormatter在这种情况下制作静态的要点是提高性能 - 您总是使用相同的格式化程序格式化日期,因此每次重新创建该格式化程序没有意义,因此它只创建并保存到全局变量中一次.
| 归档时间: |
|
| 查看次数: |
263 次 |
| 最近记录: |