2010-01-25 2 views
0

Привет, у вас есть проблема с новичком с объективом c, cocoa & iPhone. Я объявила mapView в своих делегатах приложения applicationDidFinishLaunching:application:, который является экземпляром/указателем класса 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

Оставьте свой код. –

ответ

1

Похоже, вы кешируете член mapView вашего делегата приложения. Однако, возможно, что в то время, когда вы выполняете этот кеш, он еще не создан (установка точки останова в этом месте покажет вам это).

Ответ на ваш вопрос: [appDelegate mapView] возвращает указатель на элемент appView. Однако, если этот член равен нулю, это то, что вы вернетесь.

+0

Я переместил назначение 'mapView' в' viewWillAppear: animated: 'и теперь он работает отлично. Кроме того, я создал свойства appDelegate и 'mapView' контроллера вида, как это предложил Мэтт Лонг. (не пробовал без них) –

+0

Это определенно звучит так, будто вы загружали свое представление, прежде чем создавать свой mapView. –

-1

Вы не сохраняете appDelegate. Если вы создали свой делегат как это:

@property (retain) id appDelegate; 

Тогда вы должны фактически вызова установить на нее, чтобы сохранить его:

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

еще лучше, использовать назначения в вашем объявлении:

@property (assign) id appDelegate; 

С уважением,

+0

Я не могу представить, что это проблема. – Chuck

+0

Да. Сожалею. Неправильный вопрос. Спасибо за понижение голосов. Это возлюбленная. ;-) –

+0

Я не спустил; Я просто прокомментировал. – Chuck

Смежные вопросы