草庐IT

Autoreleasepool

全部标签

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

我有以下代码-(NSString*)stringByEscapingXMLEntities;{NSString*result;@autoreleasepool{result=[selfstringByReplacingOccurrencesOfString:@"&"withString:@"&"];result=[resultstringByReplacingOccurrencesOfString:@"\""withString:@"""];//...lotof-stringByReplacingOccurrencesOfString:callsresult=[res

ios - 从 autoreleasepool block 中设置 NSError outparam 的正确方法是什么?

我有这样的方法:-(void)processAThing:(id)thingerror:(NSError*__autoreleasing*)error{@autoreleasepool{//Startprocessing.//Findsomepartwaythrougherror..if(error){*error=[NSErrorerrorWithDomain...];returnNO;}//Moreprocessing.}}这是崩溃和崩溃的,因为NSError是自动释放的,当返回发生时,池被耗尽,所以调用者得到的东西现在是假的。我知道我可以显着重新设计该方法,因此我收集了自动释放b

ios - 现代 iOS 8 NSOperation 使用仍然需要@autoreleasepool 吗?

我已通读ConcurrencyProgrammingGuide在指南中,文本指出GCD调度队列定义了它们自己的@autoreleasepool池,并提到仍然建议在每个调度级别定义一个池,但对于NSOperation什么也没说,Apple提供的示例代码也没有显示@autoreleasepool结构的用法。在NSOperation的上下文中,@autoreleasepool唯一被模糊提及的地方是在RevisionHistory中,2012-07-17-Removedobsoleteinformationaboutautoreleasepoolusagewithoperations.查看在线

memory-management - 在 Swift 程序中有必要使用 autoreleasepool 吗?

在thisWWDC14presentation的第17页上,它说WorkingwithObjective-C?Stillhavetomanageautoreleasepoolsautoreleasepool{/*code*/}这是什么意思?这是否意味着如果我的代码库没有任何Objective-C文件,则不需要autoreleasepool{}?在ananswerofarelatedquestion,有一个autoreleasepool有用的例子:-(void)useALoadOfNumbers{for(intj=0;j如果将上面的代码翻译成Swift并删除autoreleasepool

objective-c - 为什么 ARC 仍然需要 @autoreleasepool?

在大多数情况下,使用ARC(自动引用计数),我们根本不需要考虑使用Objective-C对象的内存管理。不再允许创建NSAutoreleasePool,但是有一个新的语法:@autoreleasepool{…}我的问题是,当我不应该手动释放/自动释放时,为什么我还需要这个?编辑:简明扼要地总结一下我从所有回答和评论中得到的:新语法:@autoreleasepool{…}是的新语法NSAutoreleasePool*pool=[[NSAutoreleasePoolalloc]init];…[pooldrain];更重要的是:ARC使用autorelease以及release。它需要一个自

objective-c - 为什么 ARC 仍然需要 @autoreleasepool?

在大多数情况下,使用ARC(自动引用计数),我们根本不需要考虑使用Objective-C对象的内存管理。不再允许创建NSAutoreleasePool,但是有一个新的语法:@autoreleasepool{…}我的问题是,当我不应该手动释放/自动释放时,为什么我还需要这个?编辑:简明扼要地总结一下我从所有回答和评论中得到的:新语法:@autoreleasepool{…}是的新语法NSAutoreleasePool*pool=[[NSAutoreleasePoolalloc]init];…[pooldrain];更重要的是:ARC使用autorelease以及release。它需要一个自

ARC下AutoReleasePool的误区

写这边文章的原因是看到网络上对于AutoReleasePool讨论,发现大家对AutoReleasePool存在误区。AutoReleasePool里面的对象何时释放?这个问题是常见的iOS面试题,错误的答案:1.等到一次runloop结束,AutoReleasePool被释放时2.超出作用域{}这些答案都不对,标准答案:每次release时retainCount减一,当retainCount为0时候释放对象。release的时机比如runloop周期中AutoReleasePool被释放时,比如超出作用域时关键概念点:1.不是所有OC对象都会加入到AutoReleasePool2.AutoR

ARC下AutoReleasePool的误区

写这边文章的原因是看到网络上对于AutoReleasePool讨论,发现大家对AutoReleasePool存在误区。AutoReleasePool里面的对象何时释放?这个问题是常见的iOS面试题,错误的答案:1.等到一次runloop结束,AutoReleasePool被释放时2.超出作用域{}这些答案都不对,标准答案:每次release时retainCount减一,当retainCount为0时候释放对象。release的时机比如runloop周期中AutoReleasePool被释放时,比如超出作用域时关键概念点:1.不是所有OC对象都会加入到AutoReleasePool2.AutoR