Как добавить дополнения в статическую библиотеку Cocoa Touch - PullRequest
0 голосов
/ 19 октября 2011

Недавно я пишу простую статическую библиотеку для себя.Он включает в себя некоторые элементы управления пользовательским интерфейсом, макросы и дополнения к классу касания какао, но с моим кодом что-то не так, и я не знаю, как его решить.

Я сделал следующие шаги:

  1. создайте проект статической библиотеки Cocoa Touch с именем Orange, просто для теста.
  2. добавьте подкласс NSObject с именем MyMath, реализуйте код.
  3. добавьте 2 файла для добавления NSArray, реализуйте код.
  4. переместить каталог проекта в "/".

  5. создать оконное приложение с именем TestOrange.

  6. перетащить Orange.xcodeproj в TestOrange.
  7. установить пути поиска заголовка равным "/ Orange / Orange"
  8. установить фазы сборки, как показано на рисунке ниже.enter image description here

, когда я запускаю 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 Ответ

1 голос
/ 25 октября 2011

Попробуйте добавить -ObjC и -load_all к вашим "другим флагам компоновщика" в настройках вашей сборки. По сути, категории в классах каркаса не обязательно связаны, если вы не укажете этот флаг. -load_all принудительно загрузит все скомпилированные классы, что решит проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...