Kyl*_*yes 8 cocoa-touch objective-c ios
下面是来自Apple的iOS核心数据教程的代码示例,我认为条件语句检查对象是否为零是很奇怪的.如果条件之前的行将对象设置为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];
}
Run Code Online (Sandbox Code Playgroud)
pax*_*blo 19
因为static.nil每当执行通过该语句时,此变量都不会设置为仅在程序启动时设置.
这是静态存储持续时间变量的一个特性.它们在启动时设置为初始值,并在此之后保留您设置的任何值.例如,以下代码:
void plugh(void) {
static int xyzzy = 0;
printf (" %d", xyzzy); // or Obj-C equivalent.
xyzzy++;
}
Run Code Online (Sandbox Code Playgroud)
如果你把它叫做很多次,它将不会输出一长串零.它将输出:
0 1 2 3 4 ...
Run Code Online (Sandbox Code Playgroud)
在苹果代码的情况下,次,这意味着日期格式将根据需要创建和(除非你把它背到nil别的地方)只有一次.如果对象创建是一件非常重要的事情,这对于性能来说可能很重要,但即使没有,也无法继续重新创建可以重复使用的东西.
| 归档时间: |
|
| 查看次数: |
1996 次 |
| 最近记录: |