2009-07-01 3 views
2

Я добавил категорию в NSString. Я попытался поместить код в свой appDelegate.h, и он работает. Тем не менее, я попытался разместить его в другом файле .h, который я включил в файл .pch, чтобы эту категорию можно было использовать в целом по проекту. Однако я продолжал получать следующее сообщение об ошибке:Где хорошее место для размещения Категории в Obj-c?

ld: duplicate symbol .objc_category_name_NSString_StringTrim in ....AppDelegate.o and .....main.o 
collect2: ld returned 1 exit status 

Странная вещь, я только получаю эту ошибку при компиляции для симулятора, но не устройство! Есть идеи?

ответ

4

Я всегда объявляю категории в Foo+Category.h и Foo+Category.m, например NSString+Hashing.h и NSString+Hashing.m. В источнике, который использует категорию I, затем импортируйте Foo+Category.h, и все работает чудесами. Хорошая вещь об этом решении заключается в том, что категория явно упоминается в коде, который ее использует, так что магия очевидна.

+0

Обычно я иду с «FooAdditions.h», но мне нравится ваш путь. Подумайте, я обратился. –