Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 访问器方法对象管理?_Objective C_Memory Management - Fatal编程技术网

Objective c 访问器方法对象管理?

Objective c 访问器方法对象管理?,objective-c,memory-management,Objective C,Memory Management,在阅读了《内存管理指南》之后,我试图了解这里发生了什么,我的理解是“到目前为止” 我正在返回指向引擎对象的指针 对象的保留计数增加,以记录我们正在创建一个指向该对象的新指针 通过在将来的某个点指定自动释放来平衡上述保留 我走对了吗 干杯-gary-我不确定我会说保留是“记录我们正在制作一个指向该对象的新指针。” retain-autorelease对表示有另一个对象对返回值感兴趣,因此它至少需要停留那么长的时间,但另一个对象不能正确地拥有返回值。没有retain,如果执行此方法的对象随后立即解除

在阅读了《内存管理指南》之后,我试图了解这里发生了什么,我的理解是“到目前为止”

  • 我正在返回指向引擎对象的指针
  • 对象的保留计数增加,以记录我们正在创建一个指向该对象的新指针
  • 通过在将来的某个点指定自动释放来平衡上述保留
  • 我走对了吗


    干杯-gary-

    我不确定我会说保留是“记录我们正在制作一个指向该对象的新指针。”


    retain-autorelease对表示有另一个对象对返回值感兴趣,因此它至少需要停留那么长的时间,但另一个对象不能正确地拥有返回值。没有retain,如果执行此方法的对象随后立即解除分配,则引擎可能没有任何其他所有者,也将立即解除分配。这不是预期的行为。这样做会导致在自动释放池耗尽之前对象的所有权不会消失。

    谢谢,我现在明白了,我没有考虑将自动释放成对保留。另外,我认为我被搞糊涂了,考虑增加retain来显示一个新对象现在指向引擎。我想我现在明白了。
    - (EngineClass *)engine {
        return [[engine retain] autorelease];
    }