- (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所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)