2011-12-01 35 views
0

我在我的应用程序(iPad,iOS 5)中具有以下结构:RestKit映射在后台释放吗?

UIView1 - > UIView2(呈现模态)。

我有一个处理REST服务的自定义类。该类处理所有需要的映射,路由等。 UIView1中有一个使用这个类的对象。

从UIView1我提出了UIView2(模态),其中包含一个UIWebView,显示一些HTML内容和一些PDF文档(取决于用户在UIView1中选择的内容)。

有时它看起来像UIView1在用户处于UIView2时在后台得到了释放。

如果用户现在关闭UIView2返回到UIView1,应用程序崩溃。该错误是一种“RestKit映射...存在”。

它在我看来,UIView1被释放,现在是在后台建立,但RestKit对象仍然存在。 RestKit是一个共享对象(Singleton)。

获得此运行的正确方法是什么?

+0

尝试使用僵尸工具配置文件。或者简单地把NSLog放入UIView1的dealloc方法。但我不认为这是proplem。 –

+0

我在UIView1的dealloc方法中有一个NSLog,并且控制台上没有交易日志的输出。但Console中有ViewDidUnload的输出。我在ViewDidLoad中启动了RestKit,我认为这可能是主要问题。 – MadMaxAPP

+0

由于restkit初始化只需要完成一次,所以最好的地方是在你的AppDelegate didFinishLaunch方法中。 – mja

回答

0

viewDidLoad不是设置RestKit映射的好地方 - 该方法可以在控制器的一个生命周期内多次调用。

在您的AppDelegate中,初始化RestKit并设置所有映射的好地方是- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions。通过这种方式,您可以确保设置过程仅在发送任何潜在请求之前完成一次。