我试图获取在void函数中生成的lat和long值,并在另一个函数中使用它们。感谢任何帮助。
- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation
{
float latDeg = newLocation.coordinate.latitude;
NSLog(@"Lat: %g", latDeg);
float longDeg = newLocation.coordinate.longitude;
NSLog(@"Lat: %g", longDeg);
}
我想使用latDeg和longDeg变量。
答案 0 :(得分:3)
将latDeg
和longDeg
声明为您班级中的实例变量。声明实例变量的属性并将其用于变量的每次访问都是可选的,但建议使用。
答案 1 :(得分:0)
如果要在同一个类中重用它们,可以在实现类之后声明它们。例如`@implementation LocationClass float latDeg; float longDeg
(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation :( CLLocation *)oldLocation { latDeg = newLocation.coordinate.latitude; NSLog(@“Lat:%g”,latDeg);
longDeg = newLocation.coordinate.longitude; NSLog(@“Lat:%g”,longDeg); } ` 这就够了。 或者您可以在AppDelegater中声明它们,然后使用它们:
YourAppDelegate 委托; delegate =(YourAppDelegate )[[UIApplication sharedApplication] delegate]; float currVar = [delegate-> longDeg];
答案 2 :(得分:0)
a)使它们成为全局变量
b)使LocationManager成为您正在使用它的类的属性。现在,您可以在该类中添加两个双属性,您可以在其中保存纬度或经度。
c)使用另一个带有lat和lon的函数扩展你的函数,并将它们写入一个变量,无论你需要它。
我强烈建议使用版本b,因为它不仅是最简单和最干净的版本,而且它是唯一一个在某些时候不太可能伤害OCP的版本。