Получение указателя или ссылки на член другого объекта - PullRequest
0 голосов
/ 25 января 2010

Привет, есть новичок в выпуске target-c, какао и 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]; работает.

Итак, вопрос в том, как мне получить указатель на appDelegates mapView от моего контроллера представления?

Ответы [ 2 ]

1 голос
/ 25 января 2010

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

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

0 голосов
/ 25 января 2010

Вы не сохраняете приложение Delegate. Если вы создали своего делегата так:

@property (retain) id appDelegate;

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

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

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

@property (assign) id appDelegate;

С уважением,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...