我的代码就像这样
- (id)getViewControllerForManagedObject:(QIManagedObject *)object {
DataTableViewControllerReports *nextControllerReports = [[[DataTableViewControllerReports alloc] initWithNibName:@"ReportsScreenXIB" bundle:nil] autorelease];
nextControllerReports.objectStack = [self.objectStack arrayByAddingObject:object];
return nextControllerReports;}
我将自动释放对象返回到父类中声明的函数。但在这一点上,应用程序崩溃了。我在调试模式下运行应用程序,我发现从这个函数返回后它显示“Objc_Msgsend”。表示nextcontrollerReports对象正在释放。所以任何人都可以帮我把这个对象传递给其他函数。
提前致谢。
答案 0 :(得分:1)
在调用此函数后立即向返回的对象添加retain并查看..
答案 1 :(得分:0)
你不应该将nextControllerReports设置为autorelease,因为它会导致运行时尽快重新启动内存。
然后你会得到一个警告,因为这个方法的调用者将保留返回对象的内存分配,这从你的方法名称是不可理解的。 要删除它,您应该将方法重命名为以copy | alloc | init。
开头的内容为了避免泄漏,方法的调用者必须尽可能释放对象。