假设我有这段代码:
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
时,dateFormatter
如何返回指向NSDate
的指针调用到inspectionDate
?dateFromString
的实现是否在其实现中执行alloc
和init
?inspectionDate = [dateFormatter dateFromString:inspDate];
帮助我想象这将是一个巨大的帮助。谢谢!
最佳答案
dateFromString
方法将实例化(可能通过某个时刻的 alloc/init 调用,或者一个 NSDate
便捷方法,它本身会进行分配)一个 NSDate
对象,并将其分配给您的 inspectionDate
变量。与任何不以 alloc
、new
或 copy
开头的“便捷”方法一样,不存在对象所有权的转移,即返回的实例是自动释放的。
关于objective-c - 返回指向不同对象的指针的方法是否会自动分配和初始化其他对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13662259/