是否可以多次調用包含繁重操作的操作?像保存按鈕(我保存第一個對象),並希望添加其他人,但該應用程序變得如此緩慢,我無法導航到其他視圖緩慢的應用程序
緩慢的應用程序
回答
您需要確保您沒有捆綁主UI你的應用程序的線程。一個可能的簡單解決方法是在不同的線程上執行保存操作。下面是如何只是使用大中央調度做了一個例子:iPhone - Grand Central Dispatch main thread
例子:
//notice this saveQueue is a new dispatch queue that's been created.
dispatch_queue_t saveQueue = dispatch_queue_create("com.mycompany.myqueue", 0);
dispatch_async(saveQueue, ^{
//this command represents your long running operation
doSaveOperation();
dispatch_async(dispatch_get_main_queue(), ^{
//always update your UI on the main thread!
[self showCompleteMessage];
});
});
感謝您的回覆:什麼是showCompleteMessage? –
@OuassimMouyarden,如果您需要在保存完成時提示用戶,那麼您只需調用一個方法來更新UI即可。告訴用戶他們的保存操作已經完成,這是沒有必要但很好的做法。 –
現在什麼時候會嘗試再次調用doSaveOperation,即使它尚未完成我的第一次調用,是否會使用相同的線程? –
您可以隨時玩弄大量數據保存相關任務的背景。您可以將與內容有關的東西分發給各種線程(隊列),您需要分離您保存的內容,並且如果它阻止了您的UI並使您的應用程序變慢,那麼您需要在後臺執行這些繁重的操作。
請確保您不要在後臺執行任何UI更新操作。嘗試閱讀關於GCD(它是如何工作的),如何創建背景隊列等以及如何玩弄它。我假設你可能正在使用核心數據來保存保存按鈕上的內容。嘗試閱讀關於父/子管理上下文對象。稍微玩一下,將繁重的任務轉移到背景中,UI的更新將始終在Main或UI線程上(如果您使用的是分派隊列,則可以通過調用get_main_queue()來完成更新)。快樂編碼。如果您有特定的代碼,那麼請告訴我們。我們很樂意提供幫助。 :)
這是我嘗試做的,但使得應用程序如此緩慢:dispatch_async(dispatch_get_main_queue(),[self saveMethod:]; });其中saveMethod是包含繁重操作的方法 –
@OuassimMouyarden您需要確保使用除主隊列以外的其他隊列。否則,就好像您正在嘗試在主線程上執行此操作。在我的答案鏈接中,創建了一個不是主隊列的新分派隊列。 –
你正在做這件事,你需要創建自己的隊列並嘗試使用它。這是主隊列 - dispatch_get_main_queue()。你需要轉移到另一個線程的勢頭。 –
- 1. Android應用程序緩慢
- 2. 我的新Android應用程序緩慢
- 3. 緩慢的應用程序性能
- 4. 緩慢的iOS應用程序
- 5. 在應用程序中緩慢加載的應用程序
- 6. Dojo使應用程序加載緩慢
- 7. AccelerationSensor.accelerationchanged()使應用程序緩慢
- 8. 燒瓶應用程序非常緩慢
- 9. Python GUI(tkinter.ttk)應用程序緩慢
- 10. getbitmap使應用程序緩慢
- 11. 緩慢加載winforms應用程序
- 12. 從應用程序中獲得緩慢
- 13. ASP.Net應用程序加載緩慢 - VS2008
- 14. Windows:緩慢啓動應用程序
- 15. ASP.NET Web應用程序緩慢
- 16. 桌面應用程序緩慢啓動
- 17. Android webview請求應用程序緩慢
- 18. Twitter Fabric.io應用程序上傳緩慢
- 19. css應用程序與谷歌應用程序引擎緩慢
- 20. Rails應用程序緩慢,是我的應用程序還是它的主機?
- 21. 在Android的鈦應用程序的響應緩慢
- 22. Php + MySql應用程序的響應緩慢
- 23. WPF應用程序和緩慢的GUI響應問題
- 24. 緩慢應用程序的進程啓動和錯誤
- 25. Android應用程序。應用程序工作非常緩慢,並導致錯誤
- 26. 使用UIView動畫後的應用程序緩慢
- 27. C程序啓動緩慢
- 28. Azure web應用程序緩慢服務器響應時間
- 29. ASP.NET web應用程序在暫停後響應緩慢
- 30. ios後臺應用程序從MPNowPlayingInfoCenter響應緩慢
請更具體的與您的問題。向我們展示一些代碼。 – Luke
on concurrency:http://developer.apple.com/library/ios/#documentation/General/Conceptual/ConcurrencyProgrammingGuide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40008091 –
在對修復提出任何建議之前給定,你必須找出*爲什麼*它很慢。請參閱http://stackoverflow.com/questions/9263783/iphone-time-profile-instrument瞭解如何配置應用程序以縮小發生的情況。 – BergQuester