我声明了CLLocation变量,我给了它一个值,但是当我在其他地方使用它时,应用程序崩溃了,并在控制台中没有任何日志
CLLocation *userLoc;
-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
userLoc=newLocation;
[self somefunction];
}
-(void) somefunction
{
NSLog(@"%@",userLoc);
}在这里,它正确地记录了userLoc
但在我的另一种方法中
- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath*) indexPath
{
NSLog(@"%@",userLoc);
}这个应用崩溃了。请帮帮忙
发布于 2010-10-18 15:22:57
核心位置在委托方法中为您提供了自动释放的CLLocation对象,因此在该方法之外它将变得无效。要保留它,您需要保留位置值:
userLoc=[newLocation retain];或者,更好的方法是使用retain属性为userLoc变量声明一个属性,并按以下方式使用它:
self.userLoc = newLocation;附言:Memory management guide真的是一本必读的书。
https://stackoverflow.com/questions/3957190
复制相似问题