我學習了自己的目標c,並沒有採取任何課程。因此,在編寫iOS應用程序時,有時候我會對小事感到困惑。這個問題可能非常蹩腳,但我找不到任何解決方案,或者我無法理解解決方案。這是我的情況:如何在主視圖控制器中創建一個用戶定義的方法,以便在iOS中連續更新值?
我的應用程序包含單個視圖控制器(默認的一個)。我想從加速計,陀螺儀和磁力計獲得連續值,並使用這些值使用行人航位推算(PDR)來估計用戶位置。爲此,我使用CoreMotion並在頭文件中創建了CLMotionManager(motionManager
)屬性。使用這種經理,我可以檢查傳感器是否可用,並得到他們的價值觀,例如:
if([_motionManager isAccelerometerAvailable])
{
_motionManager.accelerometerUpdateInterval = 0.1;
[_motionManager startAccelerometerUpdatesToQueue:[[NSOperationQueue alloc]init] withHandler:^(CMAccelerometerData * _Nullable accelerometerData, NSError * _Nullable error) {
x=accelerometerData.acceleration.x;
y = accelerometerData.acceleration.y;
z = accelerometerData.acceleration.z;
}];}
同樣,我可以從陀螺儀和磁強計值。我按下一個按鈕後得到一個IBAction
方法內這些值:
-(IBAction)startSensor:(id)sender
{
//Getting accelerometer, gyroscope, and magnetometer values.
}
的PDR操作在我的下一個方法發生,因爲:
-(void)thePDROperationWith:(NSArray*)accelerometerValues gyroscopeValues:(NSArray*)gyros magnetometerValues:(NSArray*)magneto
{
//The PDR operations with accelerometer, gyroscope and magnetometer values
}
現在,我的問題是:
1)如何從thePDROperationWith::
方法獲得連續的PDR操作值?我在startSensor
方法中調用了此方法,但是當我按下按鈕時,I 僅獲取一次該值。此外,我是否應該在頭文件中聲明這個方法 (如用戶定義的NSObject
子類)?
2)是什麼樣
//a method in CLBeaconManager delegate -(void)beaconManager:(CLBeaconManager*)manager didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region { //code }
用戶定義的方法和委託方法之間的差異?
此委託方法(我期望我使用正確的術語)連續運行以定義CLBeaconRegion
中的信標範圍。我如何爲我的目的製作這種方法?
謝謝。