我希望在我的ios應用程序正在運行時執行一項功能。如何在ios應用程序運行時運行一個函數?
什麼是我需要寫這個功能,在委託類?
我很困惑,因爲如果我宣佈這viewContorller並切換到其他的viewController此休息。或者有像
func locationManager(manager:CLLocationManager, didUpdateLocations locations:[AnyObject]) {
這是所有的時間運行?
謝謝!
我希望在我的ios應用程序正在運行時執行一項功能。如何在ios應用程序運行時運行一個函數?
什麼是我需要寫這個功能,在委託類?
我很困惑,因爲如果我宣佈這viewContorller並切換到其他的viewController此休息。或者有像
func locationManager(manager:CLLocationManager, didUpdateLocations locations:[AnyObject]) {
這是所有的時間運行?
謝謝!
我建議把函數在另一個文件中,並使用NSThread
- (void)createThread
{
[NSThread detachNewThreadSelector:@selector(startBackgroundJob) toTarget:self withObject:nil];
}
- (void)startBackgroundJob
{
[self performSelectorOnMainThread:@selector(monitorApp) withObject:nil waitUntilDone:NO];
}
- (void)monitorApp
{
}
如果你具體指的didUpdateLocations,這是你不直接調用方法,而是調用OS隨時爲您提供位置更新。雖然它通常建議您的位置代碼是由一些單處理的地方,以鞏固/封裝所有位置的邏輯,如果你創建一個CLLocationManager,並告訴它startUpdatingLocations,該方法將不斷呼籲**由操作系統,您無需處理用定時器,循環等
**當應用程序被轉到後臺位置更新將停止,而當應用程序又回到前臺位置更新將恢復沒有你需要重新啓動它們。這些數據每秒鐘可以達到一次,但再次依靠操作系統來確定設備的位置並將這些更新發送給您。
如果你指的是別的這是一個不同的答案,但我懷疑你是直接引用位置更新。
對不起,我不是指位置更新。所以答案是什麼?謝謝! – user3745888 2014-09-03 20:43:48
答案很大程度上取決於你想要「一直」或「不斷」做什麼,而且很可能(在某些情況下)你不應該那樣做。 – Mike 2014-09-03 20:45:52
例如我想檢查設備中可用的內存/存儲,並顯示給用戶什麼時候低,我有檢查存儲的功能,但我不知道我是否應該在一個線程中使用它。謝謝! – user3745888 2014-09-03 21:06:36
你具體指didUpdateLocations,或任何一般的方法? – Mike 2014-09-03 20:07:11
一般的工作方式,像didUpdateLocations,所有的時間和不斷 – user3745888 2014-09-03 20:32:54