Obj-C: ошибка при попытке сохранить косвенный указатель как iVar - PullRequest
1 голос
/ 05 марта 2012

Меня попросили создать метод с сигнатурой, похожей на эту:

- (void)updateLocation:(CLLocation**)location atInterval:(NSTimeInterval)interval untilDate:(NSDate*)finishDate;

Идея состоит в том, что пользователь передает адрес переменной, которую я обновляю из моего класса. Итак, мне нужно сохранить аргумент местоположения как iVar, только когда я пытаюсь создать iVar, я получаю ошибку:

Указатель на неконстантный тип 'CLLocation *' без явного владельца.

Как мне решить эту проблему?

1 Ответ

1 голос
/ 05 марта 2012
  1. Не делайте этого.
  2. Проблема заключается в автоматическом подсчете ссылок: ARC должна знать семантику владения pointee.Решение: Сделайте тип аргумента и переменной экземпляра CLLocation * __strong *.
  3. Опять же, не надо! Предлагаемая архитектура нарушает инкапсуляцию и должна быть отклонена как плохая конструкция.Вместо этого используйте делегирование или уведомления.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...