У меня есть собственная структура, содержащая полезные классы/методы, которые я часто использую в своих приложениях. Недавно я добавил расширение класса для NSString "NSString + Extensions.h/m", чтобы добавить свои собственные методы. Пример:
- NSString + Extensions.h
@interface NSString (Extensions) - (NSString *)removeDiacritics; @end
- NSString + Extensions.m
#import "NSString+Extensions.h" @implementation NSString (Extensions) - (NSString *)removeDiacritics { return [[[NSString alloc] initWithData:[self dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES] encoding:NSASCIIStringEncoding] autorelease]; } @end
Я успешно скомпилирую свою фреймворк. Но когда я пытаюсь использовать одну из функций этого расширения класса в любом приложении:
- AppDelegate.m
// CUtils is the name of the framework. CUtils.h contains #import of all header files // contained in my framework #import <CUtils/CUtils.h> @implementation AppDelegate ... - (void)applicationDidBecomeActive:(UIApplication *)application { /* Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previouslyin the background, optionally refresh the user interface. */ 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]: непризнанный селектор, отправленный в экземпляр 0x340c
Но если я добавлю расширение своего класса непосредственно в приложение (вне моей рамки), он отлично работает...
Любые подсказки?
** РЕДАКТИРОВАТЬ **
Как некоторые из вас спросили, я добавил опции -all_load и -ObjC в "Other Linker Flags", но проблема остается.