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

在Objective-C中保留/释放方法参数是一个好主意吗?

如何解决《在Objective-C中保留/释放方法参数是一个好主意吗?》经验,为你挑选了1个好方法。

考虑以下ObjC代码示例:

- (void)doStuffWithString:(NSString *)someParam {
    // Do stuff with someParam
}

如果在多线程应用程序中执行此代码,保留/释放someParam是否是个好主意?具体来说,我正在考虑传入参数是由许多线程共享的单例对象的场景.例如,以下是否更安全?

- (void)doStuffWithString:(NSString *)someParam {
    [stringParam retain];
    // Do stuff with someParam
    [stringParam release];
}

Andrew Grant.. 11

不,尝试为参数提供线程安全不是单个函数的工作.

在堆栈的某处向下传递了作为"doStuffWithString"参数的对象.这个代码应该保证该对象在函数调用的长度内保持有效.

要考虑两件事;

    在您调用第三方或库函数的情况下,这些将不会为您执行保留/释放.

    如果存在删除参数的危险,则可能会在您的"保留"调用发生之前发生!

这个主题也可能有所帮助.



1> Andrew Grant..:

不,尝试为参数提供线程安全不是单个函数的工作.

在堆栈的某处向下传递了作为"doStuffWithString"参数的对象.这个代码应该保证该对象在函数调用的长度内保持有效.

要考虑两件事;

    在您调用第三方或库函数的情况下,这些将不会为您执行保留/释放.

    如果存在删除参数的危险,则可能会在您的"保留"调用发生之前发生!

这个主题也可能有所帮助.

推荐阅读
手机用户2402852387
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有