Ios4 发布MKReverseGeocoder会使我的应用程序崩溃!

Ios4 发布MKReverseGeocoder会使我的应用程序崩溃!,ios4,release,mkreversegeocoder,Ios4,Release,Mkreversegeocoder,我需要知道我的用户来自哪里,所以我制作了一个小的singleton对象,它获取坐标并使用mapkit获取我需要的国家代码 这是我的头文件: #import <Foundation/Foundation.h> #import <CoreLocation/CoreLocation.h> #import <MapKit/MapKit.h> #define TW_GEO_CODER_CHANGED_STATE @"TW_GEO_CODER_CHANGED_STAT

我需要知道我的用户来自哪里,所以我制作了一个小的singleton对象,它获取坐标并使用mapkit获取我需要的国家代码

这是我的头文件:

#import <Foundation/Foundation.h>
#import <CoreLocation/CoreLocation.h>
#import <MapKit/MapKit.h>

#define TW_GEO_CODER_CHANGED_STATE  @"TW_GEO_CODER_CHANGED_STATE"

@interface TWGeoCoder : NSObject <CLLocationManagerDelegate, MKReverseGeocoderDelegate>
{
    CLLocationManager *locationManager;
    MKReverseGeocoder *geoCoder;

    NSString *currentCountryIsoCode;
}

+ (TWGeoCoder*) sharedTWGeoCoder;

-(void) startGeoCoder;
-(void) stopGeoCoder;


@property (nonatomic, retain) NSString *currentCountryIsoCode;

@end
嗯,调用stopGeoCoder方法会使我的应用程序崩溃,甚至通过performSelectorOnMainThread调用它

问题在于这些方面:

if (geoCoder != nil)
    {
        [geoCoder cancel];
        [geoCoder release];
        geoCoder = nil;
    }
当我试图释放它时,似乎MKReverseGeocoder真的很生气! 我只通过“didFail”方法得到崩溃。 事实上,当它找到placemark时,另一个类将得到通知,做一些事情并调用stopGeocoder和。。。它没有崩溃!
WTF?

您应该参考解决方案中的另一个堆栈溢出帖子:

if (geoCoder != nil)
    {
        [geoCoder cancel];
        [geoCoder release];
        geoCoder = nil;
    }