2012-03-03 45 views
5

我們有一個已經在應用程序商店生活的應用程序。應用程序更新仍指向舊的刪除筆尖。如何解決這個問題而不重新安裝應用程序?

現在我們計劃通過編程創建刪除相應的NIB(XIB)文件的所有視圖&來減小應用程序大小。

問題是即使刪除了筆尖&不需要,應用程序的更新版本仍然指向舊筆尖,並出現類似這樣的問題(此圖像只是一個例子,問題是一致的整個應用程序):

enter image description here

基本上,意見得到雙方IB &代碼建立起來。

我們到目前爲止唯一的解決方案是刪除&重新安裝應用程序,但要求所有用戶這樣做是不可取的。此外,它還會刪除其本地存儲的應用程序數據,這是我們在此嘗試避免的主要問題。


對於上面示出的例子,下面的代碼被用於加載的ViewController:

早些時候(當視圖是使用筆尖內置):

TheNewVC *theNewVC = [[TheNewVC alloc] initWithNibName:@"TheNewVC" bundle:nil]; 
    [self presentModalViewController:theNewVC animated:YES]; 

現在(當視圖是以編程方式構建,導致以上問題):

TheNewVC *theNewVC = [[TheNewVC alloc] initWithNibName:nil bundle:nil]; 

    UINavigationController *addNavCon = [[UINavigationController alloc] initWithRootViewController:theNewVC]; 
    [self presentModalViewController:addNavCon animated:YES]; 

JFYI,即使TheNewVC *theNewVC = [[TheNewVC alloc] initWithNibName:nil bundle:nil];被替換爲TheNewVC *theNewVC = [[TheNewVC alloc] init];,問題保持不變。


什麼解決方案可以在那裏,不涉及重新安裝的應用程序。我們可以通過編程的方式刪除iOS引用的nib緩存嗎?或者在更糟糕的情況下,要求用戶這樣做?任何幫助將非常感激。

+0

您是否刪除了nib文件或者它仍然存在於項目中? – HelmiB 2012-03-03 11:22:27

+0

筆尖被移除..「 – BufferStack 2012-03-03 11:28:29

回答

7

我假設你在Xcode中運行應用程序。其中不會從應用程序包中清除預先存在的資源。然而,當你通過應用商店安裝的,我肯定它清潔您的應用程序包,距離解壓過頂的新版本(太舊資源被清掉。)

如果你想成爲雙確保您的.xib不會被加載,只需重命名ViewController類,它將不再加載舊的xib(因爲它在應用程序包中查找名爲viewcontrollername.xib的文件)

要做到這一點,視圖控制器的.h,右鍵單擊視圖控制器名稱,然後選擇重構。

+0

」但是,當您通過應用商店安裝時,我確信它會清除您的應用程序包並將新版本解壓到頂部。「 - 我對此不太確定。它是構建應用程序並將所有資源放入其中的Xcode。如果它放入緩存數據,設備將使用該數據。 – 2012-03-03 11:44:13

+0

不,當您通過Xcode「運行」應用程序時,它只會將新文件直接複製到應用程序包中,因此您最終會獲得大量舊資源。然而,應用程序商店的'發佈'模式的乾淨構建將產生一個全新的.ipa,所以如果資源已被刪除,他們*不會*出現在應用程序包中。隨後,當用戶從appstore/adhoc安裝時,預安裝的應用程序將被刪除,並且新的ipa軟件包將在頂部解壓縮。 – 2012-03-03 11:46:51

+0

無論哪種方式,即使@BufferStack擔心資源可能仍然存在,我的答案的第二部分(重命名ViewController類)是正確的。 – 2012-03-03 11:47:54

相關問題