gpt4 book ai didi

iphone - 为什么我的代码中不需要保留但它有效

转载 作者:可可西里 更新时间:2023-11-01 17:11:14 26 4
gpt4 key购买 nike

我有课

@implementation MyClass

- (void) foo
{
ivar = [NSString stringWithString:@"ivar"];
}

- (void) bar
{
NSLog(@"%@", ivar);
}

和main.m

MyClass * m = [[MyClass alloc] init];
[m foo];
[m bar];

为什么stringWithString不需要保留?

你能给我举一个需要保留的例子吗?

最佳答案

这是因为自动释放池没有时间耗尽它的内容。这是一个崩溃的例子:

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
MyClass *m = [[MyClass alloc] init];
[m foo];
[pool drain];
[m bar];

在您的示例中保存字符串的自动释放池属于当前运行循环的 99%,它在事件循环开始时创建一个新池,然后在结束时将其排出。

关于iphone - 为什么我的代码中不需要保留但它有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5870536/

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