2011-09-09 11 views
0

私はAPIクラスを持っています。これをMyClassと呼ぶことができます。これは私のアプリケーション全体で利用できるようにしたいのです。したがって、私は#importをMyProject-Prefix.pchファイルに入れました。私自身のAPIクラスを初期化する

私が(私のappDelegateで)クラスを開始すると、エラーメッセージcannot init a class object.が表示されます。 私は私のクラスを間違って開始していることを理解していますが、私はそれをどうすればいいのか分かりません。これは開発のための共通点ではないので(私が見ているように)、 "DummysのためのObjective-C APIを作成" と呼ばれるための

  1. どれリンク:;グーグル(または私は間違って探しています))

    ので、私は2つの質問がありますか? ;)

  2. 私のコードを簡単に見て、私は間違っていますか?

    #import <Foundation/Foundation.h> 
    #import <CommonCrypto/CommonDigest.h> 
    
    #import "NSStringAdditions.h" 
    #import "XMLRPCResponse.h" 
    #import "XMLRPCRequest.h" 
    #import "XMLRPCConnection.h" 
    /** 
    * END required libs 
    */ 
    
    extern int EID; 
    extern NSString * SHARED_SECRET; 
    extern NSString * MODE; 
    
    @interface MyClass : NSObject 
    
    + (id)initWithEid:(int)eid secret:(NSString*)secret mode:(NSString*)mode; 
    + (NSArray*)web_invoice_infoWithOCR:(NSString*)ocr pno:(NSString*)pno; 
    + (NSString*)the_digest:(NSString*)source; 
    
    @end 
    

    MyClass.m

    #import "MyClass.h" 
    
    @implementation MyClass 
    
    int EID; 
    NSString * SHARED_SECRET; 
    NSString * MODE; 
    
    NSString * URL_LIVE; 
    NSString * URL_BETA; 
    
    #pragma mark init/dealloc 
    
    + (id)init { 
        self = [super init]; 
        if (self) 
        { 
    
        } 
        return self; 
    } 
    
    + (id)initWithEid:(int)eid secret:(NSString*)secret mode:(NSString*)mode 
    { 
        self = [super init]; 
        if (self) 
        { 
         if (![[mode lowercaseString] isEqualToString:@"beta"] && ![[mode lowercaseString] isEqualToString:@"live"]) 
         { 
          @throw ([NSException exceptionWithName:@"Invalid mode" reason:[NSString stringWithFormat:@"Invalid mode '%@' selected. Should either be 'beta' or 'live'", mode] userInfo:nil]); 
         } 
    
         EID = eid; 
         SHARED_SECRET = secret; 
         MODE = [mode lowercaseString]; 
        } 
    
        return self; 
    } 
    
    + (NSArray*)web_invoice_infoWithOCR:(NSString*)ocr pno:(NSString*)pno {  
        NSArray *params = [NSArray arrayWithObjects:ocr, EID, pno, [MyClass the_digest:[NSString stringWithFormat:@"%d:%@:%@", EID, ocr, SHARED_SECRET]], nil]; 
    
        NSLog(@"Array: %@", params); 
    
        return params; 
    } 
    
    - (id)xmrpc_call_function:(NSString*)method parameters:(NSArray*)params 
    { 
        // Not finished yet, Warning exists 
    } 
    [...] 
    

    私のコードを見てみたが、あなたは+(ID)init関数に気付くでしょう MyClass.h:

このは私のクラスであります。私は-(id)init, -(id)initialize, +(id)initialize, +(void)initialize, -(void)initializeを試しました。

これはどのように私AppDelegateで、「負荷」私のクラスである:私は私のクラスと同じ方法等を開始しようとしています

[MyClass initWithEid:1234 secret:@"1234" mode:@"BETA"]; 

EDIT
慌てる。例:あなたが最初にそれをアロケーションする必要が

[FlurryAnalytics startSession:@"1234"]; 

答えて

3

MyClass *myClass = [[MyClass alloc] initWithEid:1234 secret:@"1234" mode:@"BETA"]; 
+0

[OK]を...今私はその1を見ている必要があります...本当に愚かな感じ。 しかし、私が見ると、Flurryについては、[FlurryAnalytics startSession:@ "1234"]; 'を使用してFlurryを開始します。彼らはどうしたらできますか? –

+0

Flurryは、クラスメソッド 'startSession:'でシングルトンを作成し、呼び出すクラスメソッドからシングルトンを呼び出します。 – rckoenes

+0

AH、ok。私は見る...私は少しそれを検索します。 Thnx。 –

関連する問題