Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 从locationManager:didUpdateLocations分配类属性_Ios_Objective C_Cllocationmanager - Fatal编程技术网

Ios 从locationManager:didUpdateLocations分配类属性

Ios 从locationManager:didUpdateLocations分配类属性,ios,objective-c,cllocationmanager,Ios,Objective C,Cllocationmanager,我有一个属性为的类 @property (strong,nonatomic) NSString* test1; .m文件 -(void)doStuff { userLocationManager = [[CLLocationManager alloc]]init]; //has been synthesized already userLocationManager.delegate = self; userLocationManager.distanceFilter = kCLDistan

我有一个属性为的类

@property (strong,nonatomic) NSString* test1; 
.m文件

-(void)doStuff
{
userLocationManager = [[CLLocationManager alloc]]init]; //has been synthesized already
userLocationManager.delegate = self;
userLocationManager.distanceFilter = kCLDistanceFilterNone; 
userLocationManager.desiredAccuracy = kCLLocationAccuracyBest;
[userLocationManager startUpdatingLocation];
NSLog(@"%@",self.test1); //logs (null)
}

-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
self.test1 = @"Hello!";
[userLocationManager stopUpdatingLocation];
}
然后,我有一个初始化locationmanager的类,等等。我最终调用
locationmanager:didUpdateLocations。
然后在这个方法中执行一个简单的
self.test1=@“Hello”
,看看是否可以从该函数中分配字符串。在另一种方法中,我使用NSLog
self.test1
,查看它是否已更新,但我在控制台中得到
(null)
locationManager:didUpdateLocations
是异步的还是什么? 谢谢 ~z~嘶嘶作响


编辑:添加了更多的代码以使问题更清楚。请原谅我从另一台计算机上复制代码时出现的语法错误。它编译得很好。

确保您的类是CLLocationManagerDelegate的委托。

您能提供更多信息吗?它应该可以工作,不是异步的。您是否在.m文件中的某个地方设置了类似viewDidLoad的委派?代码应该是这样的;CLLocationManager*locationManager=[[CLLocationManager alloc]init];locationManager.delegate=self;[locationManager startUpdatingLocation];在日志中,您的字符串可能会在委托方法之前被调用,这可能就是您得到空结果的原因。只需在didUpdateLocations中记录一些内容,查看它是否在您的类中调用。更新了我的代码。此外,我可以确认该方法已启动。奇怪的是,它在我发布的代码的第8行之后记录了日志。好吧,你的问题正是我告诉你的。在[userLocationManager startUpdatingLocation]行之后,您的NSLog将与委托方法同时激发。因此,在设置字符串之前会触发NSLog。哦,这很有意义,谢谢!但是我如何修复它,或者确保字符串已设置?