2011-11-29 66 views
2

Apple的iOS模擬器非常棒 - 我一直都在使用它,因爲它比在真實設備上運行要容易得多。但它有一些缺點,其中之一就是太強大了。因爲它可以訪問計算機的資源,所以我經常發現在iOS模擬器上運行良好(平穩)的代碼在真實設備(在這種情況下,即我的iPhone 4)上運行得並不順暢。是否可以讓iOS模擬器更像真正的iPhone?

此標題問題說明了一切,但我會再說一遍:是否可以讓iOS模擬器像真正的iOS設備一樣運行?

回答

4

您可以使用「好」或「renice只能」命令來改變低模擬器的調度優先級,但它可能會幫助不大,除非是在同一時間運行一些其他的,更高優先級的任務。

就個人而言,我想你會離開花費時間獲得設備上運行的竅門更好。這確實不是那麼難,而且最終你對應用的真實性能有了更好的瞭解。

+0

嗯......有趣。也許我會嘗試,同時在我的筆記本電腦上運行每個應用程序...... –

0

不,這就是蘋果公司銷售開發許可證的方式。

您可以限制CPU和使用某種工具來阻止它的RAM,但充其量是一個猜測。

+0

我想這從商業角度來看是有意義的 - 你知道任何這樣的公用事業嗎? –

+0

我想知道是否有可能進入瘋狂的程度,創建處理能力和RAM有限的虛擬機。 – ScarletAmaranth

+0

這聽起來合理,費時:)但這可能是我唯一的選擇。 –

1

將這個在您的應用程序,你讓使用大量內存空間的幾個地方。這會產生內存警告並導致iOS釋放視圖,並嘗試釋放內存。您可以在同一時間;-)

#if TARGET_IPHONE_SIMULATOR 
    SEL memoryWarningSel = @selector(_performMemoryWarning); 
    if ([[UIApplication sharedApplication] respondsToSelector:memoryWarningSel]) { 
     NSLog(@"simulated memory warning"); 
     [[UIApplication sharedApplication] performSelector:memoryWarningSel]; 
    } 
#endif 

所有viewDidUnload錯誤也許在這裏和那裏添加一些延遲的好辦法,但你必須決定在哪裏,有多少延遲。這裏是一個延時100ms:

#if TARGET_IPHONE_SIMULATOR 
{ 
    const struct timespec delay = { 0, 100000000 }; 
    nanosleep(&delay, NULL); 
} 
#endif 
+0

我不確定我是否理解這將如何使模擬器像真正的設備一樣工作。 –

+0

它仍然不會像真正的設備一樣工作,但是在真實的設備上,您的內存有限,並且偶爾會發出內存警告,並且必須正確處理它們。真正的設備也比SIM慢,並且可以使用SIM中的時間延遲策略來減慢發生速度過快的操作。最好的解決方案是開發和測試模擬和各種設備(3GS,4S,iTouch,iPad等) – progrmr

+0

啊我看到了...我會嘗試! –

1

你必須既基準實際設備和仿真器上的特定的應用,如對差分你的應用程序做了什麼變化。

說模擬器措施20X您的代碼更快。您可以嘗試在應用程序委託中創建一個重複的NSTimer,並且在定時器回調中每隔0.05秒納入主線程47.5毫秒(或其他間隔和比率),然後查看是否會將模擬應用程序降低到大約應用在您的設備上。您可能不得不嘗試試驗和錯誤,以獲取適量的「泥漿」,以使您的應用程序無法使用。

在計時器回調,你也可以監控您的應用程序的VM髒腳印,如果它擴展了一定數量終止該應用。

相關問題