Можно ли создать объект CLHeading в Objective C? - PullRequest
7 голосов
/ 10 февраля 2010

Я пытаюсь внедрить подкласс менеджера местоположений, чтобы позволить мне передавать данные о курсе на симулятор iphone, аналогично взлому unimotion / акселерометра. К сожалению, согласно CLHeading документам , все доступно только для чтения, и нет инициализатора, который позволял бы устанавливать заголовок. Есть ли способ форсировать создание заполненного экземпляра CLHeading?

Ответы [ 3 ]

8 голосов
/ 10 февраля 2010

Поскольку Objective-C является языком с динамической типизацией, вы можете создать свой собственный класс (например, MyFakeHeading) и, если он отвечает на все те же селекторы, что и CLHeading, вы можете просто привести его как CLHeading и вместо этого передать его в качестве параметра. И, поскольку вам нужно только подделать собственный код, вам даже не нужно реализовывать всю функциональность CLHeading, только части, которые вы используете.

1 голос
/ 02 октября 2015

Если вы хорошо используете частные методы (частные или корпоративные приложения), вы можете добавить CLHeading+Init.h в свой проект:

@interface CLHeading (Init)

- (id)initWithHeading:(double)heading accuracy:(double)accuracy;

@end

Я использую его в моем симуляторе местоположения https://github.com/maciekish/MockingPlace

Внимание! Это приведет к отклонению вашего приложения в App Store!

0 голосов
/ 01 сентября 2016

Другой подход заключается в создании подкласса CLHeading и переопределении методов получения и установки свойств, которые вас интересуют.

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