2010-01-25 74 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