草庐IT

NSAutoReleasePool

全部标签

ios - NSAutoreleasepool 有泄漏吗?

结果会怎样?有没有泄漏或崩溃??-(NSString)returnPersonName{NSAutorelease*pool=[[NSAutoreleasealloc]init];NSString*name=[[[NSStringalloc]initWithString:@"Name"]autorelease];[pooldrain];returnname}让我有点困惑。 最佳答案 此代码违反了内存管理规则。您执行了alloc,因此您获得了+1引用计数的所有权,然后您对其执行了autorelease,由此您放弃了您对引用计数的所有权

iphone - 你需要在 GCD 的一个 block 中创建一个 NSAutoreleasePool 吗?

通常,如果您生成后台线程或在NSOperationQueue上运行NSOperation,则需要为该线程或操作创建NSAutoreleasePool,因为默认情况下不存在。相同的规则是否适用于放置在GrandCentralDispatch队列中并将在非主线程上运行的block?也就是说,您是否需要在您分派(dispatch)到主队列以外的任何block中的每个block中创建一个NSAutoreleasePool?在我有限的测试中,我没有看到控制台警告您通常会在后台线程或NSOperations中看到自动释放对象。但是,我似乎无法找到这方面的权威文档,所以我想知道是否有人可以指出这是在

objective-c - NSAutoreleasePool 自动释放池是如何工作的?

据我了解,使用alloc、new或copy创建的任何内容都需要手动释放。例如:intmain(void){NSString*string;string=[[NSStringalloc]init];/*usethestring*/[stringrelease];}不过,我的问题是,这不是同样有效吗?:intmain(void){NSAutoreleasePool*pool;pool=[[NSAutoreleasePoolalloc]init];NSString*string;string=[[[NSStringalloc]init]autorelease];/*usethestring*