如何在cocoa touch静态库中添加附加内容

时间:2011-10-19 02:53:08

标签: iphone ios cocoa-touch

我最近正在为自己写一个简单的静态库。它包括一些ui控件,宏和可可触摸类的添加,但我的代码有问题,我不知道如何解决它。

我做了以下步骤:

  1. 创建一个名为Orange的cocoa touch静态库项目,仅供测试。
  2. 添加一个名为MyMath的NSObject子类,实现代码。
  3. 为NSArray添加添加2个文件,实现代码。
  4. 将项目目录移至“/".

  5. 创建一个名为TestOrange的基于窗口的应用程序。

  6. 将Orange.xcodeproj拖到TestOrange中。
  7. 将标题搜索路径设置为“/ Orange / Orange”
  8. 设置构建阶段,如下图所示。 enter image description here
  9. 当我运行TestOrange时,它可以打印MyMath的结果,但会立即崩溃。 enter image description here

    MyMath可以工作,但NSArrayAdditions无效。我认为NSArrayAdditions有问题。

    以前有人遇到过这个问题吗?请帮我。

    提前感谢。

    此处列出了所有代码。 MYMATH

    @interface MyMath : NSObject {
    }
    - (NSNumber*)AddA:(int)a B:(int)b;
    @end
    
    @implementation MyMath
    - (NSNumber*)AddA:(int)a B:(int)b {
        return [NSNumber numberWithInt:a+b];
    }
    @end
    

    NSArrayAdditions

    @interface NSArray (Additions)
    - (NSNumber*)Double:(int)a;
    @end
    
    @implementation NSArray (Additions)
    - (NSNumber*)Double:(int)a {
        return [NSNumber numberWithInt:2*a];
    }
    @end
    

    使用libOrange

    #import "TestOrangeAppDelegate.h"
    
    #import "MyMath.h"
    #import "NSArrayAdditions.h"
    @implementation TestOrangeAppDelegate
    @synthesize window=_window;
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        MyMath *mm = [[MyMath alloc] init];
        NSLog(@"%@", [mm AddA:12 B:23]);
        [mm release];
    
        NSArray *ary = [[NSArray alloc] init];
        NSLog(@"%@", [ary Double:13]);
        [ary release];
    
        [self.window makeKeyAndVisible];
        return YES;
    }
    @end
    

1 个答案:

答案 0 :(得分:1)

尝试在构建设置中将-ObjC-load_all添加到“其他链接器标记”。 基本上,除非您指定此标志,否则框架类的类别不一定会被链接。 -load_all将强制加载所有已编译的类,从而解决问题。