Ошибка компоновщика, неопределенные символы: «_getPropertyType» при использовании Objective-C Runtime Reference - PullRequest
0 голосов
/ 23 апреля 2011

Я пытался получить имя свойства со следующими кодами и нажал на ошибку компоновщика, Неопределенные символы: "_getPropertyType"

unsigned int outCount, i;
objc_property_t *properties = class_copyPropertyList([self class], &outCount);
for(i = 0; i < outCount; i++) {
    objc_property_t property = properties[i];
    const char *propName = property_getName(property);
    if(propName) {
        const char *propType = getPropertyType(property);
        NSString *propertyName = [NSString stringWithUTF8String:propName];
        NSString *propertyType = [NSString stringWithUTF8String:propType];
        }
    }
 }

Я уже импортирую #import "objc / runtime.h", так есть ли какой-нибудь флаг компоновщика, который мне нужно включить?

Спасибо!

Ответы [ 2 ]

1 голос
/ 23 апреля 2011

Как сказал вам компоновщик, функция API-интерфейса Objective-C не экспортирует функцию getPropertyType().Фактически, компилятор должен был предупредить вас перед компоновщиком, поскольку нет соответствующего объявления.

API времени выполнения экспортирует функцию с именем property_getAttributes, которая возвращает строку C, описывающую тип свойства .Это описано в документе Objective-C Runtime Programming Guide .Вам необходимо проанализировать эту строку, чтобы получить любую необходимую информацию.

Есть еще один вопрос о переполнении стека , в котором один ответ содержит определение функции getPropertyType(), которая анализирует строкувозвращается property_getAttributes().Это может быть то, что вы ищете.На самом деле ваш код выглядит очень похоже на код в другом ответе.

0 голосов
/ 23 апреля 2011

getPropertyType() не является частью Objective-C API.(то есть функция не существует в libobjc.)

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