objective-c – 如何使用ARC将所有权转移出@autoreleasepool

objective-c – 如何使用ARC将所有权转移出@autoreleasepool,第1张

概述我有以下代码 - (NSString *)stringByEscapingXMLEntities;{ NSString *result; @autoreleasepool { result = [self stringByReplacingOccurrencesOfString:@"&" withString:@"&"]; resul 我有以下代码

- (Nsstring *)stringByEscaPingXMLEntitIEs;{       Nsstring *result;    @autoreleasepool {        result = [self stringByReplacingOccurrencesOfString:@"&" withString:@"&"];        result = [result stringByReplacingOccurrencesOfString:@"\"" withString:@"""];        // ... lot of -stringByReplacingOccurrencesOfString: calls        result = [result stringByReplacingOccurrencesOfString:@" " withString:@" "];    }    return result;}

我现在问自己如何将所有权结果转移出方法.在ARC之前,我会在退出autorelease块之前保留结果,并在方法结束时自动释放它.

谢谢!

解决方法 有两种方法可以做到这一点:

>将方法重命名为copyStringByEscaPingXMLEntitIEs – 副本表示所有权的转移,ARC会相应地创建代码.
>在标题中将NS_RETURNS_RETAINED附加到方法定义,如下所示: – (Nsstring *)stringByEscaPingXMLEntitIEs NS_RETURNS_RETAINED.

编辑:正如’iljawasCoding’提到的,@ autoreleasepool没有真正需要保持 – 除了优化.

编辑2:记住:ARC总是做正确的事.您尝试的所有内容(您的评论)都会产生完全相同的正确程序 – 尽管如果结果被定义为__strong则缺少一些优化.

总结

以上是内存溢出为你收集整理的objective-c – 如何使用ARC将所有权转移出@autoreleasepool全部内容,希望文章能够帮你解决objective-c – 如何使用ARC将所有权转移出@autoreleasepool所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1002913.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存