2012-03-05 68 views
3

我有這個應用程序,最初是爲iOS 2.x編寫的。 我最近需要添加一個小功能,並且被迫製作應用程序,它在沒有任何問題的iOS升級過程中倖免於難,符合iOS5。 只有在測試並提交應用程序後,我才從300,000個用戶羣獲取報告,該應用程序無法在iOS 4.2.1的第二代iPod Touch上使用。我在第一代iPod touch上測試過,而且運行得很好。 有趣的是,現在我終於找到了第二代iPod,在設備上的調試模式下,該應用程序運行良好。只有當我通過iTunes同步AdHoc時,我會得到與通過App Store下載應用程序相同的症狀:UIImageView加載圖像,但幾秒後,圖像消失,留下空白屏幕。發佈的應用程序顯示空白屏幕,但不在調試器中

什麼是最好的方法弄清楚,在代碼中哪裏出了問題?

感謝您的幫助

更新:我已經要求蘋果來幫助我在這裏。到目前爲止,這是通信的相關部分:

「通常只會在商店或審閱期間顯示的問題是由於Xcode如何配置爲在Debug vs Release中構建您的應用程序(即構建配置用於提交到商店)。

要確保你正在測試的確切構建應用程序的您提交到App Store,你可以創建一個歸檔的身材,你既可以測試,並提交在Xcode 4中,產品 - >存檔會將你的應用程序版本存檔到Organizer窗口中。

你可以通過「共享...」 f作爲IPA,從Xcode的Organizer窗口中,然後使用iTunes安裝IPA。

(僅供參考:「分享...」您使用iTunes安裝的存檔版本是測試應用程序的首選方式,Xcode以與App Store稍微不同的方式安裝應用程序。它的速度更快,但對於最後的測試,通過iTunes安裝是最接近於用戶將體驗)「

和:

」。因此,我的建議是,發生在你的代碼的地方,你「想斷言「是可疑的。在你的代碼監控進程中放置幾個​​NSLog語句,也許輸出像你的UIImageView的幀大小等信息。「

雖然我明白,這顯然是唯一的出路,我有點震驚的意思所有這一切:

正如你應該擁有和測試設備和操作系統的組合,或只是在你的客戶把它和看到的東西出問題開發商

+0

你檢查了崩潰日誌,看看有沒有寫出來嗎? – 2012-03-05 13:36:18

+0

與你的問題無關..但只是想知道你有300.000+用戶羣運行它一個 Shubhank 2012-03-05 13:42:36

+0

@Nick Bull:該應用不會崩潰。它只是顯示一個空白的視圖,而不是帶有圖像的視圖。 – Sjakelien 2012-03-05 14:18:43

回答

1

我不記得在哪裏,但我聽說這個問題與UIImageView之前有關。我記得問題是他們在後臺線程上實例化了UIImage。由於NSLog()影響線程我可以想象,在使用日誌的調試模式下,多線程的任何影響都可能得到緩解。但是,在發佈模式下,日誌語句被剝離,可能會發生錯誤。

+0

我對此感到興奮,因爲它非常有意義。但是,當我對所有的NSLog進行了評論(並檢查它們是否確實已從控制檯中消失)時,該應用程序只能在調試模式下在設備上正常運行。 – Sjakelien 2012-03-06 08:20:38

+0

我還沒有聽說過有關問題,這些問題與是否從XCode啓動的跳板啓動相關。 – NJones 2012-03-06 09:19:48

+0

@Sjakelien你是在後臺線程上創建'UIImage'還是'UIImageView'? – NJones 2012-03-07 02:48:23

1

我剛碰到類似的問題。原來我是在混合和匹配NSManagedObjectContext對象。我不知道爲什麼這在調試器中起作用,並且在我從跳板啓動時破壞了。

我能夠通過使用Xcode中的「Product-> Attach to Process」來調試我在模擬器中啓動的應用程序。

希望能幫助別人。

0

我有一個類似的問題:在開發中運行良好,但Product/Archive/Distribute/Ad Hoc ipa文件無法正常運行。由於@CornPuff我開始挖了我的CoreData的東西,解決了這個問題:

我有一些像這樣的代碼:

dbMethods * myDbMethods = [[dbMethods alloc] init]; 
aUser *local_db_user = [myDbMethods getTopRecord]; 

if (local_db_user != nil) { 

    lbl_user_name.text = [NSString stringWithFormat:@"Welcome %@", local_db_user.user_name]; 

在發展始終把像歡迎約翰·史密斯在標籤中。在存檔文件中,始終將Welcome(空)放在標籤中。注意:NSManagedContextObject是在getTopRecord方法中創建的。

我不得不在我需要我的aUser的方法中創建NSManagedObjectContext對象myDb;發送的方法,我現在叫,getTopRecordSafe

NSManagedObjectContext *myDb = [[[dbManager alloc] init] getManagedObjectContext]; 
dbMethods * myDbMethods = [[dbMethods alloc] init]; 
aUser *local_db_user = [myDbMethods getTopRecordSafe: myDb]; 

if (local_db_user != nil) { 
    lbl_user_name.text = [NSString stringWithFormat:@"Welcome %@", local_db_user.user_name]; 

最後,我發現this article有助於理解(?)爲什麼會這樣。 Objective-C當然是C語言。

如果有人在Xcode或Jetbrain的AppCode,或任何其他iOS IDE複選框,上面寫着創建並運行,你會在發展中要發送給蘋果,這裏的同一個文件的知道請讓我們知道。 :-)

相關問題