簡體   English   中英

iOS-應用程序界面在網絡通話期間啟動時凍結

[英]iOS - app interface freezes up on startup during network calls

我正在使用的應用程序在首次啟動並更新所有過期的新聞源時會獲取大量不同的新聞源。 發生這種情況時,界面通常會凍結,您無法單擊任何東西。 實際的網絡調用是在單獨的線程上完成的,而數據庫操作是在主線程上完成的。 這會導致接口凍結嗎?

有人告訴我,我需要一次只將兩個要更新的提要插入到網絡操作隊列中,這樣它就不會一次嘗試所有提要,但是已經設置成只能做很多網絡一次通話。 我不明白一次將隊列中的事物減少會如何使它們更快地運行,如果它們只是要順次放入它們的話。 如果我錯了,請指正我,我對此還很陌生。

像這樣的任何可能導致UI凍結的幫助都將不勝感激!

將耗時的操作從主線程上移開總是一個好主意。

幸運的是,在iOS上非常簡單。 如果耗時的任務非常簡單,則可以考慮使用performSelectorInBackground

例如:

 [self performSelectorInBackground:@selector(myFunction:)
    withObject:myParam];

但是,請務必記住,一定不要從后台線程訪問GUI。 要將對象放回主線程,請使用performSelectorOnMainThread

例如:

 [self performSelectorOnMainThread:@selector(myFunction:) myParamwaitUntilDone:YES];

嘗試將此策略應用於您的數據庫調用。 根據您的方案,您可能希望將其包裝在NSOperation或者在找到凍結原因后使用線程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM