自动释放对象的生存时间

问题描述

|
-(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中的运行循环等待某些事件发生并对其执行操作。运行循环是事件处理循环,可用于安排工作并协调收到的事件的接收。运行循环的目的是在有工作要做时让线程忙,而在没有工作时让线程进入睡眠状态。 如果不需要,则需要在方法中创建自动释放池,否则它将仅在事件循环的开始创建,而在事件循环的结束消耗掉。 检查一下。运行循环结束-自动释放池恢复     ,        当您“ 2”个对象时,该对象将被添加到自动释放池中并排队等待释放。释放自动释放池后,将向池中的所有对象发送“ 3”消息,并从内存中释放它们。为了回答您的问题,假设某个时刻未保留该对象,则该对象会在池中保留一段时间。 有关更多信息,请参见《内存管理编程指南》的“自动释放池”部分。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...