iphone:在函数之间传递对象

时间:2009-12-22 09:53:54

标签: iphone object

我的代码就像这样

- (id)getViewControllerForManagedObject:(QIManagedObject *)object {

DataTableViewControllerReports *nextControllerReports = [[[DataTableViewControllerReports alloc] initWithNibName:@"ReportsScreenXIB" bundle:nil] autorelease];

nextControllerReports.objectStack = [self.objectStack arrayByAddingObject:object];
return nextControllerReports;}

我将自动释放对象返回到父类中声明的函数。但在这一点上,应用程序崩溃了。我在调试模式下运行应用程序,我发现从这个函数返回后它显示“Objc_Msgsend”。表示nextcontrollerReports对象正在释放。所以任何人都可以帮我把这个对象传递给其他函数。

提前致谢。

2 个答案:

答案 0 :(得分:1)

在调用此函数后立即向返回的对象添加retain并查看..

答案 1 :(得分:0)

你不应该将nextControllerReports设置为autorelease,因为它会导致运行时尽快重新启动内存。

然后你会得到一个警告,因为这个方法的调用者将保留返回对象的内存分配,这从你的方法名称是不可理解的。 要删除它,您应该将方法重命名为以copy | alloc | init。

开头的内容

为了避免泄漏,方法的调用者必须尽可能释放对象。