2009-07-01 15 views
2

Ich habe NSString eine Kategorie hinzugefügt. Ich habe versucht, den Code in meine appDelegate.h und es funktioniert. Ich habe jedoch versucht, es in eine andere .h-Datei zu platzieren, die ich aus der .pch-Datei eingefügt habe, sodass diese Kategorie projektweit verwendet werden kann. Allerdings hielt ich folgende Fehlermeldung erhalten:Wo ist ein guter Ort, um eine Kategorie in Obj-c zu platzieren?

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

Die seltsame Sache ist, dass ich nur diese Fehlermeldung erhalten, wenn ich für den Simulator kompilieren, aber nicht Gerät! Irgendwelche Ideen?

Antwort

4

Ich erkläre immer Kategorien in Foo+Category.h und Foo+Category.m, zum Beispiel NSString+Hashing.h und NSString+Hashing.m. In der Quelle, die die Kategorie verwendet, importiere ich dann die Foo+Category.h und alles funktioniert Wunder. Das Gute an dieser Lösung ist, dass die Kategorie im Code, der sie verwendet, explizit erwähnt wird, so dass die Magie offensichtlich ist.

+0

Ich gehe normalerweise mit "FooAdditions.h", aber ich mag Ihren Weg. Betrachte mich als bekehrt. –

Verwandte Themen