2011-03-02 76 views
2

我有以下問題,在不久的將來我需要爲iPhone編寫幾個不是很複雜的應用程序。我目前不擁有iPhone,所以我打算購買一個用於測試目的。簡而言之,iPhone 4允許我測試爲舊版ios版本編寫的應用程序嗎?任何陷阱?或者我是否必須購買舊的手機/ ipad才能正確進行測試?iOS 4通常向後兼容?

回答

3

是,執行正確的測試,你將需要測試你是支持個人設備上。該文檔將告訴您,如果您使用的框架/ API在較早的iOS版本中受到支持。恐怕會有一些主觀的答案,因爲我確信一些應用程序在模擬器測試的許多版本中運行得很好。在考慮向後兼容性時(需要的速度,內存使用情況,API等),有許多因素需要考慮。你說你的應用程序「不是很複雜」,所以你可能會沒事。我會在儘可能多的設備上測試您的應用程序。

我還應該區分「它會編譯」和「它是否按預期執行」之間的區別。您可以使用xcode通過定位和舊版本來測試應用程序是否兼容。在特定設備上進行測試時,應用程序是否會按需運行。

+1

一般來說,我的理念是不公佈對操作系統版本或設備類別的支持,除非我已經對它們進行了測試。有許多微妙的錯誤只有在舊版硬件或操作系統版本上運行時纔會暴露出來。例如,哪個弱鏈接框架可以保證針對4.x SDK構建的內容不會在3.x操作系統上運行,因此我總是需要在舊設備上進行測試以查看是否有任何內容在啓動時中斷。 – 2011-03-02 16:46:10

0

iPhone通常不向後兼容。有時候會添加方法,屬性,類等,或者老版本會被棄用。 對於測試,我建議您有幾個設備具有不同的iOS版本,具體取決於您想要發佈的目標iOS版本。

同時檢查了iOS Reference Library:因爲當它是可用

+0

僅僅因爲某個方法被棄用並不意味着使用它的應用程序的舊版本的SDK將不再運行在新的操作系統版本上。事實上,Apple認識到用於構建應用程序的SDK版本,甚至使用兼容模式,以便應用程序在舊版操作系統版本中依賴的錯誤仍然呈現給它們,以便它們不會在新操作系統中崩潰。例如,依賴於2.0錯誤的應用程序,其中'+ imageNamed:'返回的過度保留的UIImage不會在3.0上崩潰,因爲操作系統可以識別這些較舊的應用程序。 – 2011-03-02 16:41:02

1

它可以讓你測試的對象爲較舊版本的iOS應用程序,是在「可用性」的每個功能等指出。

然而,對於像第一代iPhone/iPod touch這樣的老式iDevices的性能差異相當重要。因此,如果您的應用程序需要昂貴的計算或類似的東西,我建議您購買舊的舊設備,以獲得這一代硬件性能的感受。

注意,如果你需要確保你將要開發可以運行在很老的設備/ IOS版本的應用程序,你也許需要沒有一些可可類和方法需要較新的iOS

+0

在那些較舊的型號上,速度較慢的處理器並不像較小的內存那麼大。內存管理對於3g及以上型號來說是一項重大的事情。從3gs一代開始,這只是一個公平的大事。 – 2011-03-02 12:53:14

1
的版本做

如果您購買了iPhone 4用於測試目的..您正在測試市場上最新的iPhone,這並不意味着您的應用程序已準備好自動定位到低端設備。讓我們來深入瞭解一下:如果您設計的應用程序必須看起來非常華麗並且可以在iPhone 4上使用,那麼您可能會使您的應用程序兼容Retina顯示。這就像玩960x640分辨率的屏幕一樣。

現在,如果你計劃目標的低端設備如iPhone 3GS,那麼所有你要做的就是減少一半圖形的資產規模,爲iPhone 3GS的分辨率320x480是

這就是它!從外觀和感覺的角度來看,您的應用程序也適用於低端設備。

現在,我們從部署的角度來看。如果你的SDK是4.2.1,而你的目標是運行3.3的設備,那麼你所要做的就是確保你不使用iOS 4.2中引入的最新庫/類。1,因爲它們不適用於在iOS 3.3上運行的設備。如果你照顧這部分,你的應用幾乎可以發貨了。

從市場的角度。我看到所有優秀的應用程序都將其部署目標設置爲iOS 4.0或更高版本。這意味着,他們只針對運行iOS 4.0或更高版本的設備。

我認爲,在iPhone 4設備上運行成功的測試周期後,您可以嘗試在低端iPhone模擬器中進行構建。 :)

3

您不能在iPhone 4上運行iOS 3,因此您必須購買單獨的設備。

但是,如果它是一個新的應用程序,我不會考慮使它與iOS3兼容。大多數用戶已經升級到iOS4。當你的應用程序在商店中時,運行iOS3的用戶將會減少。

當然,這會消除像0,5%的潛在客戶。但是如果您只能從運行iOS3的0.5%客戶那裏獲得10美元的收入,那麼您不會購買100美元的其他設備。而且你必須再次測試你的整個應用程序,這將花費大量的時間。

所以你應該考慮放棄對iOS3的支持。