Objective c 返回指向不同对象的指针的方法是否自动分配并初始化另一个对象?

Objective c 返回指向不同对象的指针的方法是否自动分配并初始化另一个对象?,objective-c,ios,cocoa-touch,pointers,memory-management,Objective C,Ios,Cocoa Touch,Pointers,Memory Management,假设我有以下代码: NSString *inspDate = @"20120515"; NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"yyyyMMdd"]; NSDate *inspectionDate; inspectionDate = [dateFormatter dateFromString:inspDate]; 当我检查它是否工作时(NSDa

假设我有以下代码:

NSString *inspDate = @"20120515";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyyMMdd"];
NSDate *inspectionDate;
inspectionDate = [dateFormatter dateFromString:inspDate];
当我检查它是否工作时(
NSDate
包含正确格式的数据),它确实。。。但是为什么呢

在这里,我将介绍以下步骤:

  • 正在堆中分配并实例化
    NSDateFormatter
    的内存
    dateFormatter
    指向该位置,明白了:

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    
  • 现在,
    dateFormatter
    被告知如何将
    NSString
    解释为日期,好吗:

    [dateFormatter setDateFormat:@"yyyyMMdd"];
    
  • 这是我不清楚的部分,
    inspectionDate
    指针设置为nil。它没有指向任何东西:

    NSDate *inspectionDate;
    
  • 当没有
    alloc
    init
    调用
    inspectionDate
    时,
    dateFormatter
    如何返回指向
    NSDate
    的指针?
    dateFromString
    的实现是否在其实现中执行
    alloc
    init

     inspectionDate = [dateFormatter dateFromString:inspDate];
    

  • 帮助我想象这将是一个巨大的帮助。谢谢大家!

    dateFromString方法将实例化一个
    NSDate
    对象(可能通过某个点的alloc/init调用,或者通过本身将执行分配的
    NSDate
    便利方法),然后将其分配给
    inspectionDate
    变量。与任何不以
    alloc
    new
    copy
    开头的“便利”方法一样,不存在对象所有权的转移,即返回的实例是自动删除的。

    。。。然后自动释放返回的日期。
    dateFromString
    为我分配和初始化
    NSDate
    对象,我只是用我的
    inspectionDate
    指针指向堆中的创建。谢谢你,先生!