-(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
消息,并从内存中释放它们。为了回答您的问题,假设对象在某个时刻没有被保留,那么它在内存中的停留时间与池的停留时间一样长。
有关此方面的更多信息,请参阅《内存管理编程指南》的"自动释放池"部分。