2013-05-01 3 views
1

Раньше сегодня я попытался добавить модульные тесты к моему проекту xcode для статической структуры, которую я создаю. После добавления целевого объекта Unit Tests к моему проекту я смог успешно запустить шаблон единичных тестов и проверить, чтобы тесты проверяли значение по умолчанию. Затем, импортировав файл, который я хотел протестировать в новом подклассе SenTestCase, я попытался запустить тест, но моя категория UIColor не смогла построить тест из-за ошибок компоновщика. Текст ошибок компоновщика выглядит следующим образом:Ошибки компоновщика UIColor Категория

Undefined symbols for architecture i386: 
    "_CGColorGetComponents", referenced from: 
     -[UIColor(ColorExtension) hexValue] in StaticFramework(StaticFramework) 
    "_CGColorGetNumberOfComponents", referenced from: 
     -[UIColor(ColorExtension) hexValue] in StaticFramework(StaticFramework) 
ld: symbol(s) not found for architecture i386 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

Далее я нашел, где эти две ссылки были в моем проекте. Оба живут в моей категории по следующей функции:

- (NSString *)hexValue 
{ 
    UIColor *color = self; 
    const size_t totalComponents = CGColorGetNumberOfComponents(color.CGColor); 
    const CGFloat * components = CGColorGetComponents(color.CGColor); 
    return [NSString stringWithFormat:@"#%02X%02X%02X", 
      (int)(255 * components[MIN(0,totalComponents-2)]), 
      (int)(255 * components[MIN(1,totalComponents-2)]), 
      (int)(255 * components[MIN(2,totalComponents-2)])]; 
} 

Если я правильно помню, оба они являются частью класса NSColor. С немного дополнительной проверкой я также заметил, что в папке с базовым модулем Unit Test оба файла UIKit.framework & Foundation.framework являются красными. Я попытался переименовать их и построить, но это также не устраняет проблему.

Интересно, что мой статический фреймворк будет по-прежнему строить и работать нормально до тех пор, пока не будет запущен связанный тест. И когда я прокомментирую эту функцию (и каждый раз, когда я ее использую), Unit Test строит без проблем. Буду ли я быть верным в своем предположении, что недостающее UIKit.framework & Foundation.framework может привести к тому, что компоновщик не найдет свойства NSColor? Есть ли у кого-нибудь дополнительные предложения, которые могли бы объяснить, почему эти свойства вызывают эти проблемы или что я могу сделать, чтобы исправить их?

Любая помощь была бы принята с благодарностью. Спасибо за помощь.

+0

Вы связываете «CoreGraphics.framework» с вашим проектом? – rmaddy

+0

Нет, я не использую CoreGraphics.framework в моей статической структуре или модульном тесте. – Krejko

+0

Да, вы это сделали. Две функции «CGColor ...» взяты из CoreGraphics. Вам нужно связать «CoreGraphics.framework» с вашим проектом. Это исправит ошибку компоновщика. – rmaddy

ответ

0

Ошибка компоновщика указывает, что вы используете функции CoreGraphics, но вы не связываете структуру CoreGraphics.

Обновите свой проект/цель, чтобы связать CoreGraphics.framework, и проблемы с компоновщиками будут решены.

Смежные вопросы