自动释放对象的生存时间


-(void)returnString
{
       NSString *str=[[NSString alloc]init];
       return [str autorelease];
}
-(void)getString
{
      NSString *p=[self returnString];
}

这里字符串str的生存期是多少。str的retainCount何时变为零。我知道在运行循环结束时,它的保留计数将变为零。运行循环的结束是否意味着调用returnString的函数的结束。如果不是,运行循环意味着什么,运行循环结束意味着什么。

-(void)returnString
{
      NSString *str=[[NSString alloc]init];
      return str;
}
-(void)getString
{
    NSString *p=[self returnString];
    [p release];
}

这种类型的释放是否正确?

在iOS中运行循环,等待一些事件发生并对其采取行动。运行循环是一种事件处理循环,用于安排工作和协调接收传入事件。运行循环的目的是在有工作要做时让线程保持忙碌,在没有工作时让线程进入睡眠状态。

您需要在方法中创建自动释放池,否则它将只在事件循环开始时创建,并在事件循环结束时排出。

检查一下。运行循环结束--自动释放池恢复

当您autorelease一个对象时,它会被添加到自动释放池中并排队等待释放。释放自动释放池时,将向池中的所有对象发送一条release消息,并从内存中释放它们。为了回答您的问题,假设对象在某个时刻没有被保留,那么它在内存中的停留时间与池的停留时间一样长。

有关此方面的更多信息,请参阅《内存管理编程指南》的"自动释放池"部分。

相关内容

  • 没有找到相关文章

最新更新