下面是来自的代码示例Apple 的 iOS 核心数据教程 http://developer.apple.com/library/ios/#documentation/DataManagement/Conceptual/iPhoneCoreData01/Articles/04_Adding.html#//apple_ref/doc/uid/TP40008305-CH106-SW2我觉得条件语句检查对象是否为零很奇怪。如果条件之前的行将对象设置为 nil,那么该对象是否总是评估为 nil?
// A date formatter for the time stamp
static NSDateFormatter *dateFormatter = nil;
if (dateFormatter == nil) {
dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setTimeStyle:NSDateFormatterMediumStyle];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
}
因为static
。该变量未设置为nil
每当执行通过该语句时,它仅在程序启动时设置。
这是静态存储持续时间变量的一个功能。它们在启动时设置为其初始值,并在之后保留您设置的任何值。例如,以下代码:
void plugh(void) {
static int xyzzy = 0;
printf (" %d", xyzzy); // or Obj-C equivalent.
xyzzy++;
}
如果你调用它一百次,将不会输出一长串零。它将输出:
0 1 2 3 4 ...
在 Apple 代码的情况下,这意味着日期格式化程序将根据需要创建,并且(除非您将其设置为back to nil
其他地方)仅一次。如果对象创建不是一件简单的事情,这有时对性能很重要,但即使不是,连续重新创建可以简单重复使用的东西也是没有意义的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)