программно identifing устройство iPhone

С gcc в соответствии с Linux можно использовать --wrap флаг компоновщика как это:

gcc program.c -Wl,-wrap,getObjectName -o program

и определяют Вашу функцию как:

const char *__wrap_getObjectName (object *anObject)
{
    if (anObject == NULL)
        return "(null)";
    else
        return __real_getObjectName( anObject ); // call the real function
}

Это гарантирует, что все вызовы к getObjectName() перенаправлены к Вашей функции обертки (во время ссылки). Этот очень полезный флаг однако отсутствует в gcc в соответствии с Mac OS X.

Не забывают объявлять функцию обертки с extern "C", если Вы компилируете с g ++ все же.

7
задан pasawaya 21 June 2012 в 18:37
поделиться

1 ответ

В прошлой истории программирования для Mac это всегда считалось неправильным вопросом.

Что вам действительно нужно знать, так это более конкретная информация. Задайте гораздо более узкий вопрос для каждого поведенческого решения в вашем коде. Например, вам может потребоваться узнать, есть ли на устройстве GPS. Другой заключается в том, что вам не следует решать, как использовать стек OpenGL, исходя из того, какая это модель устройства, а, скорее, исходя из предоставленной информации о возможностях / расширениях OpenGL.

Информация, которую вы получаете сейчас, взята из UIDevice, который К сожалению, это плохо спроектированный API. Он предоставляет вам совершенно неправильную информацию в худшем из возможных форматов - строках.

У Эрики Садун есть расширение для UIDevice, которое может быть полезно здесь . Это просто оболочка для sysctlbyname ("hw.machine", ...) . Это свойство отличается для каждой модели.

Но опять же, обычно это неправильный вопрос.

8
ответ дан 6 December 2019 в 19:39
поделиться