2011-10-19 79 views
0

我正在爲自己最近編寫一個簡單的靜態庫。它包括一些ui控件,宏和可可觸摸類的增加,但是我的代碼有問題,我不知道如何解決它。如何添加添加到可可觸摸靜態庫

我做下列步驟操作:

  1. 創建一個名爲橙可可觸摸靜態庫項目,只是爲了測試。
  2. 添加一個名爲MyMath的NSObject子類,實現代碼。
  3. 爲NSArray添加2個文件添加,實現代碼。
  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

嘗試在構建設置添加-ObjC-load_all到你的 「其他連接標誌」。 基本上,除非您指定此標誌,否則框架類中的類別不一定會鏈接。 -load_all將強制加載所有已編譯的類,從而解決問題。

+0

它的工作原理,謝謝。 – Tony

+1

我知道這已經解決了,但是爲了澄清,它應該是'-all_load'(http://developer.apple.com/library/mac/#qa/qa1490/_index.html)而不是'-load_all'。 –