2011-09-09 6 views
0

API 클래스가 있습니다.이 클래스를 MyClass라고 부르며, 전체 응용 프로그램에서 사용할 수 있기를 원합니다. 따라서 #import를 MyProject-Prefix.pch 파일에 넣습니다.자신의 API 클래스를 초기화하십시오.

이제 (내 appDelegate에서) 클래스를 시작하면 cannot init a class object.이라는 오류 메시지가 나타납니다. 나는 수업을 잘못 시작한다는 것을 알고 있지만 어떻게해야하는지 잘 모르겠다 ... 그리고 개발을 위해 공통적으로 발생하는 것이 아니기 때문에 (내가 본 것처럼) 진실을 알기위한 많은 정보가 없다. "Dummys을위한 오브젝티브 C는 API 년대 만들기"

  1. 에 대한 모든 링크 :

    그래서, 나는이 개 질문이), 구글 (또는 내가 잘못 찾고 있어요)? ;)

  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"]; 

편집 내가 예를 들어, 내 수업 같은 방식으로 시작하려고
을 Flurry 않습니다. 예 : 당신은 먼저 ALLOC 필요

[FlurryAnalytics startSession:@"1234"]; 

답변

3

는 :

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

좋아요 ... 지금은 정말 바보가 된 기분 ... 나는 그 일을 볼 수 있어야합니다. 그러나, 만약 내가 바라 보면, Flurry는 ... [FlurryAnalytics startSession : @ "1234"];'를 사용하여 flurry를 시작합니다. 어떻게 할 수 있습니까? –

+0

Flurry는'startSession :'클래스 메소드를 사용하여 싱글 톤을 생성합니다. 그러면 그들은 호출하는 모든 클래스 메소드에서 싱글 톤을 호출합니다. – rckoenes

+0

AH, 알았습니다. 나는 ... 조금만 검색 할 것입니다. Thnx. –

관련 문제