Ошибка менеджера местоположения: (Ошибка KCLErrorDomain 0)

Можно определить указатель функции как глобальную переменную. Синтаксис вызывающих сторон не изменился бы. Когда Ваша программа запускается, она могла проверить, установлены ли некоторый флаг командной строки или переменная среды позволить регистрироваться, затем сохранить исходное значение указателя функции и заменить его Вашей функцией входа. Вам не был бы нужен специальный "вход, включенный" сборка. Пользователи могли позволить регистрироваться "в поле".

необходимо будет быть в состоянии изменить исходный код вызывающих сторон, но не вызываемого (таким образом, это работало бы при вызове сторонних библиотек).

foo.h:

typedef const char* (*GetObjectNameFuncPtr)(object *anObject);
extern GetObjectNameFuncPtr GetObjectName;

foo.cpp:

const char* GetObjectName_real(object *anObject)
{
    return "object name";
}

const char* GetObjectName_logging(object *anObject)
{
    if (anObject == null)
        return "(null)";
    else
        return GetObjectName_real(anObject);
}

GetObjectNameFuncPtr GetObjectName = GetObjectName_real;

void main()
{
    GetObjectName(NULL); // calls GetObjectName_real();

    if (isLoggingEnabled)
        GetObjectName = GetObjectName_logging;

    GetObjectName(NULL); // calls GetObjectName_logging();
}
90
задан MQLN 15 November 2017 в 00:59
поделиться

1 ответ

Из документации API:

CLError

Коды ошибок, возвращаемые местоположением объект менеджера.

typedef enum {kCLErrorLocationUnknown = 0, kCLErrorDenied, kCLErrorNetwork, kCLErrorHeadingFailure} CLError;

Константы

kCLErrorLocationUnknown Местоположение менеджер не смог получить значение местоположения прямо сейчас. iPhone OS 2.0 и новее. Заявлено в CLError.h.

kCLErrorDenied Доступ к местоположению обслуживание было отказано пользователем. Доступно в iPhone OS 2.0 и новее. Заявлено в CLError.h.

kCLErrorNetwork Сеть была недоступен или ошибка сети произошло. Доступно в iPhone OS 3.0b и позже. Объявлено в CLError.h.

kCLErrorHeadingFailure Заголовок не может быть определено. Доступно в iPhone OS 3.0 и новее. Заявлено в CLError.h.

Это означает, что местоположение не может быть определено.

Я предполагаю, что наиболее вероятная причина в том, что диспетчер местоположения использует Wi-Fi для триангуляции местоположения, а база данных не охватывает локальные сети . Это, по-видимому, может быть исправлено пользователем, если они перейдут сюда .

Однако, как я заметил, я также иногда видел это как временную ошибку при запуске программы на основе местоположения в месте, где данные о местоположении WiFi нормально работает.

Наконец, я предполагаю, что эту ошибку можно увидеть, если есть какой-то аппаратный сбой.

13
ответ дан 24 November 2019 в 06:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: