Ios 如何让块运行一次,但每次打开viewController时?

Ios 如何让块运行一次,但每次打开viewController时?,ios,objective-c,objective-c-blocks,Ios,Objective C,Objective C Blocks,好吧,我想我解决了这个问题,但是遇到了另一个 我获取用户的位置,然后使用他们的坐标来查找他们当前所在的邮政编码,但是当我在块中运行它时,它只会注销到控制台一次。当我尝试用另一种方法运行该块时,它会吐出很多次,而且都使用相同的邮政编码 我的问题是,我如何使块打印一个邮政编码,并且每次打开视图控制器时都打印一个邮政编码 //user's location locationManager = [[CLLocationManager alloc] init]; locationManag

好吧,我想我解决了这个问题,但是遇到了另一个

我获取用户的位置,然后使用他们的坐标来查找他们当前所在的邮政编码,但是当我在块中运行它时,它只会注销到控制台一次。当我尝试用另一种方法运行该块时,它会吐出很多次,而且都使用相同的邮政编码

我的问题是,我如何使块打印一个邮政编码,并且每次打开视图控制器时都打印一个邮政编码

//user's location
    locationManager = [[CLLocationManager alloc] init];
    locationManager.distanceFilter = kCLDistanceFilterNone;
    locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters;
    [locationManager startUpdatingLocation];



        CLGeocoder *fgeo = [[CLGeocoder alloc] init];
        [fgeo reverseGeocodeLocation:locationManager.location completionHandler:^(NSArray *placemarks, NSError *error) {
            if (!error) {
                CLPlacemark *placemark = [placemarks objectAtIndex:0];
                zip = placemark.postalCode;

                NSLog(@"%@", zip);
                //[self jsonRequest];
当我尝试用另一种方法运行程序块时,它会吐出大量的数据 所有时间都使用相同的邮政编码


一旦它输入If(!error),就输入一个return语句,这应该可以解决问题。

覆盖
viewdide
并将代码放入其中。每次视图控制器出现时都会调用。如果希望在创建视图控制器并即将显示时仅调用一次,请覆盖
viewDidLoad


如果只想在视图出现在屏幕上后调用一次,则必须在
viewdideappear
中检查是否有指示其是否第一次出现的内容。您可能需要在
viewDidLoad
init
中设置一个标志,然后在第一次调用
viewdidappeage
时取消设置

要使其在显示视图时运行,将显示“放入视图”。对于问题的第2部分不太清楚。这取决于你所说的“提出”是什么意思,但
viewwillbeen
似乎是一个起点。加入viewwillbeen似乎解决了所有问题。谢谢你们!