Ios4 发布MKReverseGeocoder会使我的应用程序崩溃!
我需要知道我的用户来自哪里,所以我制作了一个小的singleton对象,它获取坐标并使用mapkit获取我需要的国家代码 这是我的头文件: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
#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;
}