类扩展和框架

Nik*_*iko 10 iphone static-libraries ios

我开发了自己的框架,其中包含我经常在我的应用程序中使用的有用的类/方法.最近,我为NSString添加了一个类扩展"NSString + Extensions.h/m"来添加我自己的方法.示例:

  • 的NSString + Extensions.h
@interface NSString (Extensions)
- (NSString *)removeDiacritics; 
@end
Run Code Online (Sandbox Code Playgroud)
  • 的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
Run Code Online (Sandbox Code Playgroud)

我成功编译了我的框架.但是当我尝试在任何应用程序中使用此类扩展的一个函数时:

  • 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]);
    }
Run Code Online (Sandbox Code Playgroud)

...

我收到以下错误:

2012-01-31 17:01:09.921 TestCUtils [4782:207] Je suisunechaîneavecdescaractèresspéciaux2012-01-3117:01:09.924 TestCUtils [4782:207] - [__ NSCFConstantString removeDiacritics]:无法识别的选择器发送给实例0x340c

但是,如果我直接在应用程序中添加我的类扩展(在我的框架之外),它工作正常...

任何提示?

**编辑**

正如你们有些人问过的那样,我在"其他链接标志"中添加了-all_load和-ObjC选项,但问题仍然存在.

在此输入图像描述

Rob*_*ill 9

看看这个技术问答,解释@Ell Neal提到的-ObjC和-all_load选项.

注意需要在链接框架(即框架的客户端)的项目上设置链接器选项,而不是框架本身.从您的屏幕截图看,您似乎在框架项目上设置选项,因为我可以NString+Extensions.m在左侧看到源文件.