Objective c 苹果代码:初始化对象为nil,然后

Objective c 苹果代码:初始化对象为nil,然后,objective-c,Objective C,为什么我们要初始化dateFormatter变量,然后立即测试它是否为nil?我在更新的苹果代码中注意到了这一点。好奇 -水牛很可能是一个静态变量。换句话说,它的值不应该在方法退出后更改。很可能,这是因为每次方法调用只需要一个变量实例。很可能是因为它是一个静态变量。换句话说,它的值不应该在方法退出后更改。很可能,这是因为每次方法调用只需要一个变量实例。这是因为该变量是一个局部静态变量,这意味着即使在局部函数返回或超出范围后,它仍保持其值。因此,第一次执行函数时,变量被设置为nil。然后,检查ni

为什么我们要初始化dateFormatter变量,然后立即测试它是否为nil?我在更新的苹果代码中注意到了这一点。好奇


-水牛很可能是一个静态变量。换句话说,它的值不应该在方法退出后更改。很可能,这是因为每次方法调用只需要一个变量实例。

很可能是因为它是一个静态变量。换句话说,它的值不应该在方法退出后更改。很可能,这是因为每次方法调用只需要一个变量实例。

这是因为该变量是一个局部静态变量,这意味着即使在局部函数返回或超出范围后,它仍保持其值。因此,第一次执行函数时,变量被设置为nil。然后,检查nil并初始化变量(这种情况只发生一次)。每隔一次执行函数时,该变量将具有非nil值,因此不会执行初始化代码块。

这是因为该变量是局部静态变量,这意味着即使在局部函数返回或超出范围后,它仍会保持其值。因此,第一次执行函数时,变量被设置为nil。然后,检查nil并初始化变量(这种情况只发生一次)。每隔一次执行函数时,变量将具有非nil值,因此不会执行初始化代码块。

该变量是一个局部静态变量。它的值在方法调用之间保持。因此,在第一次调用时,它被初始化为nil,然后它的值被重新分配到
NSDateFormatter*
实例的地址。在后续调用中,该值为非nil(因为它已分配给
NSDateFormatter
实例的地址),因此不会重新初始化


局部静态变量类似于命名空间范围的全局变量。它的值对于进程是全局的,但它仅在声明它的范围内可见。

该变量是一个局部静态变量。它的值在方法调用之间保持。因此,在第一次调用时,它被初始化为nil,然后它的值被重新分配到
NSDateFormatter*
实例的地址。在后续调用中,该值为非nil(因为它已分配给
NSDateFormatter
实例的地址),因此不会重新初始化


局部静态变量类似于命名空间范围的全局变量。它的值对流程来说是全局的,但它仅在声明它的范围内可见。

Ah,好的。所以这类似于单例设计模式。尼托;)事实上,这有点不同。它在C语言中被大量使用,函数需要保存某种状态数据,但是除了函数之外,任何东西都不需要知道或关心这些数据是什么。啊,好的。所以这类似于单例设计模式。尼托;)事实上,这有点不同。它在C语言中被大量使用,函数需要保存某种状态数据,但是除了函数之外,任何东西都不需要知道或关心这些数据是什么。
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    // Date formatter for displaying dates
    static NSDateFormatter *dateFormatter = nil;
    if(dateFormatter == nil){
        dateFormatter = [[NSDateFormatter alloc] init];
        [dateFormatter setTimeStyle:NSDateFormatterMediumStyle];
        [dateFormatter setDateFormat:NSDateFormatterMediumStyle];
    }