2012-02-13 67 views
0

我有一個方法(myMethod)在一個類(myClass),它利用CLLocationManager startMonitoringSignificantLocationChanges()。 MyClass是CLLocationManager的委託,我實現了didUpdateToLocation()方法。如何等待某種方法在另一種方法中完成?

我想要做的是從myMethod中調用startMonitoringSignificantLocationChanges(),然後調用didUpdateToLocation()並完成後,我想繼續在myMethod中工作。這可能嗎?

回答

7

我不會說這是不可能的,但我強烈建議您接受這種工作方式的異步性質,並找到另一種方法來做你想做的事情。如將myMethod分割爲「之前」和「之後」部分,並讓您的委託觸發「之後」。這在Cocoa/iOS中是一個非常常見的模式,從長遠來看,您不會對框架感到高興。

這是特別是如果myMethod是在主線程上運行的東西,則爲true,因爲在等待位置更新時阻止該線程將鎖定整個UI。花太長時間,系統會殺死你的應用程序。

+0

我曾閱讀過的最有用的建議。一個燈泡出現了我長期以來遇到的問題。 – trudyscousin 2012-02-14 03:20:52

1

不,不是,但你不需要那樣。一旦獲得您需要的數據,只需在didUpdateToLocation中繼續您的功能即可。

相關問題