2011-12-01 28 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。通過這種方式,您可以確保設置過程僅在發送任何潛在請求之前完成一次。