Objective c 如何从objective c中的实例化对象返回值?

Objective c 如何从objective c中的实例化对象返回值?,objective-c,xcode,ios4,delegates,reverse-geocoding,Objective C,Xcode,Ios4,Delegates,Reverse Geocoding,我创建了一个接收坐标的对象,并假设在对其进行反向地理编码后返回一个位置标记。问题是这个方法是a同步的,所以我需要一种方法在找到placemark后返回它。在我的视图控制器中,我称之为: [getzip reverseGeocodeCurrentLocation:coordinate]; 其中,getzip是实现此功能的对象的实例(在我的示例中仍然是空的…): 现在,一旦进入reverseGeocoder:didFindPlacemark,如何将placemark返回到viewcontrolle

我创建了一个接收坐标的对象,并假设在对其进行反向地理编码后返回一个位置标记。问题是这个方法是a同步的,所以我需要一种方法在找到placemark后返回它。在我的视图控制器中,我称之为:

[getzip reverseGeocodeCurrentLocation:coordinate];
其中,getzip是实现此功能的对象的实例(在我的示例中仍然是空的…):

现在,一旦进入reverseGeocoder:didFindPlacemark,如何将placemark返回到viewcontroller

我试着做一些与LocationManager相同的事情,其中locationUpdate方法是从LocationManager:didUpdateToLocation:fromLocation调用的,并在viewcontroller中实现locationUpdate,但没有成功。换句话说,我做到了:

- (void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFindPlacemark:(MKPlacemark *)placemark
{
[self.delegate setPlacemark:placemark];
}
并在viewcontroller中实现了setPlacemark,但由于某种原因它无法访问setPlacemark(顺便说一句,在我调用setPlacemark:reverseGeocoder中的placemark后,placemark是正确的)


谢谢

根据您的评论,
self.delegate
[self.delegate setPlacemark:placemark]时为
nil
reverseGeocoder:didFindPlacemark:
中的code>。因此,什么也没有发生

在调用
reverseGeocoder:didFindPlacemark:
之前,必须将
委托属性设置为视图控制器。如果视图控制器中的变量
getzip
是实现
reverseGeocoder:didFindPlacemark:
GetZipCode
?)的类的实例,则可以在视图控制器中执行此操作:

getzip.delegate = self;

正如我在评论中所说,通过使视图控制器符合
GetZipcodeDelegate
协议,意味着视图控制器可以成为委托,因为它响应委托对象可能发送给其委托的消息。这并不意味着它就是委托。

您确定
self.delegate
不是
nil
?“
[self.delegate setPlacemark:placemark];
并在viewcontroller中实现了
setPlacemark
,但由于某种原因它无法到达
setPlacemark
”是否将视图控制器设置为代理?如何将视图控制器设置为代理?抱歉,新目标c…是的!是零…我现在该怎么办(@albertamg:我想我知道你的意思,是的,我确实将其设置为委派:@interface MyMap:UIViewController,其中GetZipcode是讨论中的类。哦,我的上帝,非常感谢你!我永远不会想到这一点。我想我错过了目标C的基本原理,因为我还没有完全理解委派的全部内容。再次感谢,没错!不客气:)看看这些文件。他们很好地解释了委托模式。
getzip.delegate = self;