Я разработал свой собственный фреймворк, содержащий полезные классы/методы, которые я часто использую в своих приложениях. Недавно я добавил расширение класса для NSString "NSString+Extensions.h/m", чтобы добавить свои собственные методы. Пример :
@interface NSString (Extensions) - (NSString *)removeDiacritics; @end
#import "NSString+Extensions.h" @implementation NSString (Extensions) - (NSString *)removeDiacritics { return [[[NSString alloc] initWithData:[self dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES] encoding:NSASCIIStringEncoding] autorelease] } @end
Я успешно компилирую свой фреймворк. Но когда я пытаюсь использовать одну из функций этого расширения класса в любом приложении :
// CUtils - это имя фреймворка. CUtils.h содержит #импорт всех заголовочных файлов. // содержащиеся в моем фреймворке #import
@implementation AppDelegate ... - (void)applicationDidBecomeActive:(UIApplication *)application { /* Перезапуск всех задач, которые были приостановлены (или еще не запущены), пока приложение было неактивным. Если приложение ранее находилось в фоновом режиме, опционально обновите пользовательский интерфейс. */ NSString *toto = @"Je suis une chaîne avec des caractères spéciaux"; NSLog(@"%@", toto); NSLog(@"%@", [toto removeDiacritics]); } ...
Я получаю следующую ошибку :
2012-01-31 17:01:09.921 TestCUtils[4782:207] Je suis une chaîne avec des caractères spéciaux 2012-01-31 17:01:09.924 TestCUtils[4782:207] -[__NSCFConstantString removeDiacritics]: unrecognized selector sent to instance 0x340c
Но если я добавляю расширение моего класса прямо в приложение (вне моего фреймворка), оно работает нормально...
Есть подсказки?
** EDIT **
Как некоторые из вас просили, я добавил опции -all_load и -ObjC в 'Other Linker Flags', но проблема осталась.