2013-04-21 78 views
2

我在設備上安裝了應用的舊版本。在我的新版本中,我不再使用.xib文件,因爲它從複雜事物變爲表視圖,我可以在代碼中實例化它。使用.xib在設備上更新應用程序已移除崩潰應用

但是,當我在設備上構建並運行時,它會崩潰,因爲它仍會嘗試從舊應用程序中包含的.xib文件加載控制器,並且抱怨缺少UILabel的鍵/值對。

例如:

SomeViewController.h(的UITableViewController)
SomeViewController.m
SomeViewController.xib(在新的版本中刪除)

SomeViewController *controller = [[SomeViewController alloc] initWithStyle:UITableViewStylePlain]; 

- (id)initWithStyle:(UITableViewStyle)style 
{ 
    self = [super initWithStyle:style]; 

    if (self) 
    { 
    } 

    return self; 
} 

即使我稱之爲 「initWithStyle」 它仍然會嘗試加載預先存在的.xib!

我目前的解決方案是用空白的UITableView創建SomeViewController.xib。

但是,我懷疑當用戶從應用程序商店更新應用程序時,它會覆蓋整個應用程序,而不會留下任何東西。

這是真的嗎?應用程序更新是否覆蓋現有的應用程序,還是會留下延遲的.xib文件?

現在我必須用其他視圖測試舊版本,以確保沒有其他問題纏綿。

上NIB的讀通過開發文本: http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/LoadingResources/CocoaNibs/CocoaNibs.html

也許,我發現了一個bug?

另一種選擇是讓我將這個類重新命名爲SomeController之類的東西,以避免自動加載關聯的.xib文件。

回答

2

蘋果已經在以下技術說明有關測試iOS應用更新解決了這個問題:

Technical Note TN2285

+1

摘要:使用Xcode構建和運行應用程序只發送已更改的文件,吃了一個「frankenbuild」。使用Adhoc構建進行測試。 – 2013-07-08 13:15:07

+0

謝謝!我最近閱讀了一些關於在發佈之前測試adhoc構建的必要性的帖子,以確保處理各種問題。添加到我的測試清單中。 – Christopher 2013-07-09 01:08:19

+0

很高興我能幫到你。我在搜索測試構建的方法時遇到了這一段文檔,以便我可以避免出現同樣的問題。 – 2013-07-09 02:59:42

1

兩個recommandations:

  • 您是否嘗試過重新啓動Xcode和您使用您的測試設備? (我有一個長時間的Xcode記錄搞亂了緩存管理並繼續使用舊版本的文件)
  • 你確定你的XIB文件沒有被另一個引用嗎? (也許是你的主要觀點有你離開你刪除的廈門國際銀行的名稱的標籤欄控制器)
+0

問題是應用程序中的設備上已存在.xib(在清單中)。清理,重建,重新啓動,NEW更新沒有幫助。問題不在於現有應用程序中存在.xib。這就是說,initWithStyle方法仍然試圖自動加載@「SomeViewController.xib」(自動關聯 - iOS 5或6的東西?) – Christopher 2013-04-22 01:38:34

+0

此外,我做了一個'grep'整個項目和SomeViewController.xib是不存在的。但它在設備上的舊應用程序中。我應該注意到我正在從SVN重新創建舊應用程序。我從設備中刪除了應用程序,重新構建了舊應用程序,然後重新安裝以驗證問題。 – Christopher 2013-04-22 01:45:39

+0

你是否grep「SomeViewController。xib「或者」SomeViewController「? – 2013-04-22 08:47:10

相關問題