gpt4 book ai didi

iphone - 什么时候触发自动释放池

转载 作者:太空狗 更新时间:2023-10-30 03:59:13 27 4
gpt4 key购买 nike

我在整个应用程序中都使用了自动释放,并且想了解自动释放方法的行为。默认的自动释放池什么时候被耗尽?它是基于计时器(每 30 秒一次?)还是必须手动调用?我需要做些什么来释放带有自动释放标记的变量吗?

最佳答案

创建和发布时有(我会说)3 个主要实例:

1.应用程序生命周期的开始和结束,在 main.m 中编写

int main(int argc, char *argv[]) { 
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];
return retVal;
}

2.每个事件的开始和结束(在 AppKit 中完成)

NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; 
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
- (void)loadView
/* etc etc initialization stuff... */
[pool release];

3.Whenever you want (你可以创建你自己的池并释放它。[来自苹果内存管理文档])

– (id)findMatchingObject:anObject { 
id match = nil;
while (match == nil) {
NSAutoreleasePool *subPool = [[NSAutoreleasePool alloc] init];
/* Do a search that creates a lot of temporary objects. */
match = [self expensiveSearchForObject:anObject];
if (match != nil) {
[match retain]; /* Keep match around. */
}
[subPool release];
}
return [match autorelease]; /* Let match go and return it. */
}

关于iphone - 什么时候触发自动释放池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3439884/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com