objective-c - 返回指向不同对象的指针的方法是否会自动分配和初始化其他对象?

标签 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];

当我检查它是否有效(NSDate 包含正确格式的数据)时,它确实有效......但为什么?

这里我将完成以下步骤:

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

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

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

    NSDate *inspectionDate;
    
  4. 当没有 allocinit 时,dateFormatter 如何返回指向 NSDate 的指针调用到inspectionDatedateFromString 的实现是否在其实现中执行 allocinit

     inspectionDate = [dateFormatter dateFromString:inspDate];
    

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

最佳答案

dateFromString 方法将实例化(可能通过某个时刻的 alloc/init 调用,或者一个 NSDate 便捷方法,它本身会进行分配)一个 NSDate 对象,并将其分配给您的 inspectionDate 变量。与任何不以 allocnewcopy 开头的“便捷”方法一样,不存在对象所有权的转移,即返回的实例是自动释放的。

关于objective-c - 返回指向不同对象的指针的方法是否会自动分配和初始化其他对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13662259/

相关文章:

ios - 生产环境中的 NSLog 语句会发生什么?

iphone - 向 UITableView 添加解释性文本,例如 Things.app

objective-c - 合并 NSNotifications

ios - 尝试在 iOS 项目中安装 FontAwesomeSwift 时 Carthage 失败

ios - 如何在捕获图像时在相机屏幕中添加任何自定义图像?

ios - makeRenderPipelineState 失败 [ushort 类型的输出与 MTLPixelFormatR16Float 颜色附件不兼容。]

objective-c - NSArray 和 bool 值

iphone - 横向模式仅适用于 iPhone 或 iPad

ios - 如何使用 xib 文件在单元格中 rtl UITextField?

ios - 为后退按钮获取正确的色彩