当前位置:  开发笔记 > IOS > 正文

Objective-C内存管理 - 返回对象时的最佳实践?

如何解决《Objective-C内存管理-返回对象时的最佳实践?》经验,为你挑选了1个好方法。

假设我有这样的函数:

- (NSSet *) someFunction {
    //code...
    return [[[NSSet alloc] initWithObjets:obj1, obj2, nil] autorelease];
}

当我调用此函数时,是否需要保留/释放返回值?我假设我这样做.

但是,如果我不进行自动释放,那么someFunction现在看起来像这样:

- (NSSet *) someFunction {
    //code...
    return [[NSSet alloc] initWithObjets:obj1, obj2, nil];
}

在这种情况下,我假设我需要释放但不保留返回值.

我的问题是,对于这些情况,建议/最佳做法是什么?someFunction的一个或另一个版本是推荐的吗?谢谢.



1> Travis Jense..:

您应该花一些时间阅读Cocoa的内存管理编程指南.

简而言之,如果您通过一个以'alloc'或'new'开头或包含'copy'的方法获得您的引用,那么您拥有该引用并且不必保留它.您可以通过直接发布或使用自动释放来提供释放.

如果你以任何其他方式获得引用(通过类方法或者你有什么),你就没有引用,所以你不必发布.如果你想保留一个参考,你必须保留它.

总而言之,它非常简单有效.


我看到很多人指的是编程指南.读起来非常无聊和干燥.需要有另一个指南
推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有