2010-01-25 75 views
0

您有一个与objective-c,可可& iPhone新手问题。我在我的应用程序代理applicationDidFinishLaunching:application:中声明了mapView,它是MKMapView类的实例/指针。 mapView是我的应用程序委托的成员。获取指针或引用另一个对象的成员

在viewDidLoad中我的视图控制器:我让我的应用程序委托的实例有以下:

appDelegate = [[UIApplication sharedApplication] delegate]; 

我的看法控制器还得到了的MKMapView * MapView的一个成员。在viewDidLoad中:我尝试这样设置:

mapView = [appDelegate mapView]; 

但似乎我不能让指针或“参考”,以实际MapView的,因为当我尝试[mapView setRegion:region animated:YES];这是行不通的。 [[appDelegate mapView] setRegion:region animated:YES];如何运作。

所以问题是如何从我的视图控制器得到指针appDelegatesmapView

+0

发布您的代码。 – 2010-01-25 18:12:34

回答

1

这听起来像你缓存你的应用程序委托的mapView成员。但是,在执行此缓存时,它可能还没有实例化(在此位置设置断点会向您显示)。

你的问题的答案是:[appDelegate mapView]返回一个指向appView成员的指针。但是,如果该成员为零,那么您将得到回报。

+0

我将'mapView'的赋值移动到了'viewWillAppear:animated:',它现在工作得很完美。另外,我根据Matt Long的建议,制作了视图控制器的'appDelegate'和'mapView'属性。 (没有尝试没有他们) – 2010-01-25 19:24:20

+0

这绝对听起来像你在你创建你的mapView之前加载你的视图。 – 2010-01-25 19:34:15

-1

你不保留appDelegate。如果您创建委托这样的:

@property (retain) id appDelegate; 

然后,你必须实际调用设置它保留它:

[self setAppDelegate:[[UIAppliation sharedApplication] delegate]]; 

更重要的是,使用分配在你的宣言:

@property (assign) id appDelegate; 

此致敬礼,

+0

我无法想象这是问题所在。 – Chuck 2010-01-25 18:24:27

+0

是的。抱歉。错误的问题。感谢您的反对票。你是一个甜心。 ;-) – 2010-01-25 18:46:09

+0

我没有downvote;我刚刚评论。 – Chuck 2010-01-25 19:50:41