我开始进行iOS编程,而且我一直在调用一个 无效方法。
请不要告诉我MKReverseGeocoding
已被弃用。我知道。我需要使用xcode 3.4和IOS 4,所以,我没有选择。 (32位计算机)。
我已经制作了这个简化的void方法:
-(void)getAdress
{
CLLocationDegrees lat=37.4217080;
CLLocationDegrees lon=-122.0829964;
CLLocationCoordinate2D coord = CLLocationCoordinate2DMake(lat, lon);
MKReverseGeocoder *reverseGeocoder=[[MKReverseGeocoder alloc] initWithCoordinate:coord];
reverseGeocoder.delegate = self;
[reverseGeocoder start];
}
如果我从viewDidLoad
调用此void方法,则会找到该地址,我可以在控制台中以纯文本形式查看该地址。
- (void)viewDidLoad {
[super viewDidLoad];
............
[self getAdress];
}
但是,如果我尝试从另一种虚空方法中做到这一点,它就不起作用了。我尝试了很多东西,但控制台从不显示地址,虽然我可以看到NSLog消息"试图获得地址"在控制台......
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
...................
NSLog(@"Trying to get adress");
[self getAdress];
}
我使用的reverseGeocoder方法:
- (void)reverseGeocoder:(MKReverseGeocoder *)reverseGeocoder didFailWithError:(NSError *)error {
NSLog(@"The geocoder has returned: ERROR%@");
}
- (void)reverseGeocoder:(MKReverseGeocoder *)reverseGeocoder didFindPlacemark:(MKPlacemark *)placemark {
NSLog(@"Reverse Adresse : %@", [placemark addressDictionary]);
}
答案 0 :(得分:0)
您的问题可能是您的reverseGeocoder var在getAddress方法结束时超出范围。这可能导致在收到响应之前取消分配对象。
您可以考虑做的一件事是使用ivar而不是局部变量。